※ 本文轉寄自 ptt.cc, 文章原始頁面
看板Soft_Job
標題

FW: [請益] 如何追查可能因MutilThtread下stackover

時間
最新2023-07-24 22:00:00
留言24則留言,9人參與討論
推噓6 ( 6018 )
※ [本文轉錄自 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 所造成 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.1.107.225 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1690094718.A.61A.html

24 則留言

※ 轉錄者: tanted (106.1.107.225 臺灣), 07/23/2023 14:55:45

wulouise, 1F
你都有bt, 怎麼不先看看caller的植是不是對的?
上面所講的值 u4IfIndex=43 , u1AdminStatus=1 就是由 gdb print 印出來的

loadingN, 2F
用 Valgrind 自己查啊

kokal, 3F
試試"hardware" watchpoint?

xam, 4F
比較簡單的就是你觀察一下這函式內有沒有呼叫完某個子程式回

xam, 5F
來之後,值就跑掉,可能是裡頭有問題
基本上 pu1InOperStatus這是pointer pu1InOperStatus=0x0(null) API 用到它 整隻程式就 crash了
※ 編輯: tanted (106.1.107.225 臺灣), 07/23/2023 16:08:58

xam, 6F
還是沒辦法的話,開發環境許可的話,把編譯器警告打開,修一修..
※ 編輯: tanted (106.1.107.225 臺灣), 07/23/2023 16:09:33

xam, 7F
我的意思是函式執行到一半,發現原本參數被改了,但如果你的意

xam, 8F
思是一進入函式,參數就錯了.. 那我一時想不到其他簡單的建議

RafaelC, 9F
可以用gdb裡 "watch"這個command可看是誰改了variable值

RafaelC, 10F
google一下gdb watch variable,就可以看到一些介紹了
難點 要監看是local variable 進入API後來才能監看
※ 編輯: tanted (106.1.107.225 臺灣), 07/23/2023 17:29:20

aa06697, 11F
有碰哪些變數的地方都寫Log?總會找到哪裡改掉那些值

wulouise, 12F
沒有signature, 你全部都pass by ref/ptr?

RafaelC, 13F
u4IfIndex不是是傳入的參數嗎?怎麼是local variaable?
其實上層有個變數 也叫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

jheli, 14F
所以你傳入的前四個參數到底是global variables還是只是上

jheli, 15F
層的local variables?上層的參數是static嗎?

jheli, 16F
無法watch那就手動將每個會碰到這些參數的thread都埋log吧

wendly777, 17F
懷疑被overflow攻擊,可以用ASan試試,另外,如果你是

wendly777, 18F
arm/x64,前幾個參數是放在register,就不可能被攻擊

wendly777, 19F
到,就要往其他方向想,x86才會放stack

xam, 20F
放register也是會炸啊,跳進子函式把stack搞爛,跳出來pop reg

xam, 21F
就會得到非預期的東西...

Bencrie, 22F
開 asan 下去跑吧,重 build 麻煩了一點

Bencrie, 23F
不介意速度的話 valgrind 掛上去跑找看看存取越界
感謝C_C++版的 LPH66 給提示的 後來我開始推測可能是進入API後 前面4個變數給記憶體位置可能是不可寫入 也就說從頭到位 變數的值未被修改過 也沒有被其他thread 修改 從一開始進入這個API 就產生segment fault https://upload.cc/i1/2023/07/24/oJ6wfn.jpg
FW: [請益] 如何追查可能因MutilThtread下stackover
u4IfIndex 的記憶體位置 是 0xaa303f9c 查看 thread map https://upload.cc/i1/2023/07/24/2bNjEW.jpg
FW: [請益] 如何追查可能因MutilThtread下stackover
https://upload.cc/i1/2023/07/24/Bf2Mkn.jpg
FW: [請益] 如何追查可能因MutilThtread下stackover
右上圖圈選 得知 0xaa303f9 的確在不可存取記憶空間 目前推測會造成這樣原因 因為我們code 分成三個部分 在build 可能帶的最佳化選項 -O 後面數字都不一樣所造成
※ 編輯: tanted (106.1.107.225 臺灣), 07/24/2023 21:59:37

wendly777, 24F
我是針對他說傳進去的參數被改掉

tanted 作者的近期文章

[新聞] 電商平台「1政策」害慘物流!司機「一天
備註請放最後面 違者新聞文章刪除 1.媒體來源: storm 2.記者署名: 陳怡穎 3.完整新聞標題: 電商平台「1政策」害慘物流!司機「一天工作12小時」血汗內幕曝:各種理由被扣錢 4.完整新聞內文: 名電商平台蝦皮購物近期開放廣大消費
[新聞] 520演說 專家關注美默許「兩國」互不隸
備註請放最後面 違者新聞文章刪除 1.媒體來源: 中央社 2.記者署名: 唐佩君/廖文綺 3.完整新聞標題: 賴總統就職演說 專家關注美默許「兩國」互不隸屬立場 4.完整新聞內文: (中央社台北22日電)總統賴清德就職演說稱呼大陸為「中國」
[新聞] 蘋果拚AI! 傳高層密訪台積電「想包先進
備註請放最後面 違者新聞文章刪除 1.媒體來源: 華視 2.記者署名: 黃傲天 蘇耘寬 報導 / 新竹市 3.完整新聞標題: 蘋果拚AI!傳高層密訪台積電「想包先進製程產能」 4.完整新聞內文: 「護國神山」台積電本週四(5/23)即將在新
[新聞] 新車半個月只拿4000輛訂單!汽車大廠「
備註請放最後面 違者新聞文章刪除 1.媒體來源: storm 2.記者署名: 陳怡穎 3.完整新聞標題: 新車半個月只拿4000輛訂單!汽車大廠「股價暴跌30%」裁員5600人 4.完整新聞內文: 中國電動車產業價格競爭、產能過剩問題,不僅
[新聞] 父母冷血拋棄:自己想辦法!15歲少女無助
備註請放最後面 違者新聞文章刪除 1.媒體來源: 風傳媒 2.記者署名: 3.完整新聞標題: 父母冷血拋棄:自己想辦法!15歲少女無助站橋邊「回望人間最後一眼」輕生畫面讓人心 碎 4.完整新聞內文: https://img-s-msn-co
[情報] 群翊 Q1 2.70億元,每股稅後4.65
------------------------------------------------------------------------- 1.請符合以下文章格式,違者4-1刪除 2.本分類提供以下幾種文章搬運 a. 每日交易數據相
更多 tanted 作者的文章...