[問題] Exit code為139(segmentation violation)

作者: BIAO (超越自己)   2014-05-05 20:51:45
板上的先進大家好,
小弟有一無窮迴圈C語言程式在Linux下執行,
執行一小時後自動異常終止,出現代碼為139,
請問可能的原因是什麼呢!?
還請板上先進不吝賜教,謝謝大家..
另可有建議的除錯方法呢!?
作者: johnjohnlin (嗯?)   2014-05-05 21:11:00
memory leak?
作者: scott260202 (Cake)   2014-05-06 00:30:00
嗯...你的程式存取了不屬於他的範圍的記憶體
作者: bitlife (BIT一生)   2014-05-06 15:35:00
前一小時沒錯,一小時候出錯還是代表有錯,只能說前一小時沒出錯是運氣. 另外程式碼連結無法下載從你的第二點和1hr症狀來猜測,很可能是race condition問題如果兩thread會有共用的變數,就該用mutex確保無race現象稍微捲著看了一下程式,你另外要注意row有可能不是標準的null-terminated string,你把它放進str開頭的函數可能會出問題,這是我瞄完第一個感覺.反正就是每個s開頭和字串相關的函數,你就要思考它的參數有沒有可能是非0結尾字串,這是常見的core dump來源之一以strcpy為例,你copy一段不是「0結尾字串」的資料(例如二進位資料),strcpy函數就會一直copy到遇到0,萬一讀到非你能讀取的address前都碰不到0,會讀進無權讀取區,就SIGSEGV了你是接手維護嗎?能寫出這個程式,應該懂上述這基本概念

Links booklink

Contact Us: admin [ a t ] ucptt.com