Soft_Job 板


LINE

※ [本文转录自 C_and_CPP 看板 #1alCn-OQ ] 作者: tanted (为何世界会那麽不单纯) 看板: C_and_CPP 标题: [问题] 如何追查可能因MutilThtread下stackover 时间: Sun Jul 23 14:45:15 2023 开发平台(Platform): (Ex: Win10, Linux, ...) linux openwrt 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出) gcc 额外使用到的函数库(Library Used): (Ex: OpenGL, ...) 问题(Question): 传入参数被莫名的修改 某个API 如下 CfaIfmNotifyInterfacStat (u4IfIndex, u1AdminStatus, &u1OperStatus, u1IsFromMib, u1IsRegToIp, &IfInfo)) != CFA_SUCCESS) 传入时的值: u4IfIndex=43 , u1AdminStatus=1, &u1OperStatus=(UINT1 *) 0xb1e0256f 进入API後值却变成 https://upload.cc/i1/2023/07/23/ZnvhDF.jpg
u4IfIndex=0, u1AdminStatus=0 , pu1InOperStatus=0x0, 前面4个参数都被变成0 请问各位网友其会被修改到的原因 是不是因为Mutil thread 所造成 其值被其他thread StackOverflow 修改 但由於thread 众多 各位网友是不是有甚麽的方式或tool 能介绍给我 去debug 找出是哪个thread 哪段code 所造成 谢谢 --
QR Code



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.1.107.225 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1690094718.A.61A.html
QR Code



※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: tanted (106.1.107.225 台湾), 07/23/2023 14:55:45
1F:推 wulouise: 你都有bt, 怎麽不先看看caller的植是不是对的? 07/23 15:02
上面所讲的值 u4IfIndex=43 , u1AdminStatus=1 就是由 gdb print 印出来的
2F:→ loadingN: 用 Valgrind 自己查啊 07/23 15:04
3F:→ kokal: 试试"hardware" watchpoint? 07/23 15:32
4F:→ xam: 比较简单的就是你观察一下这函式内有没有呼叫完某个子程式回 07/23 16:00
5F:→ xam: 来之後,值就跑掉,可能是里头有问题 07/23 16:01
基本上 pu1InOperStatus这是pointer pu1InOperStatus=0x0(null) API 用到它 整只程式就 crash了 ※ 编辑: tanted (106.1.107.225 台湾), 07/23/2023 16:08:58
6F:→ xam: 还是没办法的话,开发环境许可的话,把编译器警告打开,修一修.. 07/23 16:04
※ 编辑: tanted (106.1.107.225 台湾), 07/23/2023 16:09:33
7F:→ xam: 我的意思是函式执行到一半,发现原本参数被改了,但如果你的意 07/23 16:13
8F:→ xam: 思是一进入函式,参数就错了.. 那我一时想不到其他简单的建议 07/23 16:14
9F:推 RafaelC: 可以用gdb里 "watch"这个command可看是谁改了variable值 07/23 16:48
10F:→ RafaelC: google一下gdb watch variable,就可以看到一些介绍了 07/23 16:50
难点 要监看是local variable 进入API後来才能监看 ※ 编辑: tanted (106.1.107.225 台湾), 07/23/2023 17:29:20
11F:→ aa06697: 有碰哪些变数的地方都写Log?总会找到哪里改掉那些值 07/23 18:54
12F:推 wulouise: 没有signature, 你全部都pass by ref/ptr? 07/23 18:56
13F:→ RafaelC: u4IfIndex不是是传入的参数吗?怎麽是local variaable? 07/23 18:59
其实上层有个变数 也叫u4IfIndex 和API 宣告的参数名字也叫u4IfIndex 上层 变数 u4IfIndex 的值是没被改到 但API里变数u4IfIndex的值被改到 目前 其实是这样认为的 "原本thread 在进入 function,cpu 因context switch 换到其他的thread 而这个thread buff 没有处理好 Overflow 盖掉原本thread 的 stack buff" ※ 编辑: tanted (106.1.107.225 台湾), 07/23/2023 19:27:24
14F:推 jheli: 所以你传入的前四个参数到底是global variables还是只是上 07/24 00:54
15F:→ jheli: 层的local variables?上层的参数是static吗? 07/24 00:54
16F:→ jheli: 无法watch那就手动将每个会碰到这些参数的thread都埋log吧 07/24 01:01
17F:推 wendly777: 怀疑被overflow攻击,可以用ASan试试,另外,如果你是 07/24 19:35
18F:→ wendly777: arm/x64,前几个参数是放在register,就不可能被攻击 07/24 19:35
19F:→ wendly777: 到,就要往其他方向想,x86才会放stack 07/24 19:35
20F:→ xam: 放register也是会炸啊,跳进子函式把stack搞烂,跳出来pop reg 07/24 21:18
21F:→ xam: 就会得到非预期的东西... 07/24 21:18
22F:推 Bencrie: 开 asan 下去跑吧,重 build 麻烦了一点 07/24 21:32
23F:→ Bencrie: 不介意速度的话 valgrind 挂上去跑找看看存取越界 07/24 21:34
感谢C_C++版的 LPH66 给提示的 後来我开始推测可能是进入API後 前面4个变数给记忆体位置可能是不可写入 也就说从头到位 变数的值未被修改过 也没有被其他thread 修改 从一开始进入这个API 就产生segment fault https://upload.cc/i1/2023/07/24/oJ6wfn.jpg
u4IfIndex 的记忆体位置 是 0xaa303f9c 查看 thread map https://upload.cc/i1/2023/07/24/2bNjEW.jpg
https://upload.cc/i1/2023/07/24/Bf2Mkn.jpg
右上图圈选 得知 0xaa303f9 的确在不可存取记忆空间 目前推测会造成这样原因 因为我们code 分成三个部分 在build 可能带的最佳化选项 -O 後面数字都不一样所造成 ※ 编辑: tanted (106.1.107.225 台湾), 07/24/2023 21:59:37
24F:→ wendly777: 我是针对他说传进去的参数被改掉 07/24 22:00







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP