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/m.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燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP