Linux 板


LINE

板上的先進大家好, 小弟有一無窮迴圈C語言程式在Linux下執行, 執行一小時後自動異常終止,出現代碼為139, 請問可能的原因是什麼呢!? 還請板上先進不吝賜教,謝謝大家.. 另可有建議的除錯方法呢!? -- --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.124.42.70
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Linux/M.1399294309.A.61F.html ※ 編輯: BIAO (140.124.42.70), 05/05/2014 20:58:23
1F:推 johnjohnlin:memory leak? 05/05 21:11
謝謝j大.. 整個程式我並沒有使用動態記憶體, 真要說有free的地方就是存取資料庫後的..mysql_free_result(result); 抑或和字串實字有關呢!? 由於不停的迴圈,而重覆一直宣告字串實字.. 程式內的副程式也有多個宣告字元陣列的地方.. 我以為區域變數在離開副程式後,便會釋放掉記憶體空間, 難道不是這樣嘛.. XD ※ 編輯: BIAO (140.124.42.70), 05/05/2014 21:20:09 參閱網上此文件http://blog.sina.com.cn/s/blog_75bf554501019cvt.html 一、的確有使用strcpy、sprintf...等指令, 但如果前一小時程式執行沒出錯,一小時後怎麼會出錯呢!? 二、有使用一個執行緒(thread),卻沒加上mutex, 在程序執行過程,小弟刻意不對該執行緒輸入指令, 該執行緒也是無窮迴圈,不停的等候client端送命令進來。 附上完整程式碼,還請板上高手指點,謝謝大家..>//< https://www.dropbox.com/sh/tbnn6f0qv3eyalu/F0wfudQZzq ※ 編輯: BIAO (140.124.42.70), 05/05/2014 21:44:17
2F:→ scott260202:嗯...你的程式存取了不屬於他的範圍的記憶體 05/06 00:30
3F:→ bitlife:前一小時沒錯,一小時候出錯還是代表有錯,只能說前一小時沒 05/06 15:35
4F:→ bitlife:出錯是運氣. 另外程式碼連結無法下載 05/06 15:36
5F:→ bitlife:從你的第二點和1hr症狀來猜測,很可能是race condition問題 05/06 15:37
6F:→ bitlife:如果兩thread會有共用的變數,就該用mutex確保無race現象 05/06 15:39
謝謝b大的解說, 程式碼修正部份小錯誤後已重新上傳。 使用valgrind --leak-check=full ./modbus+MySQL+Control26 得到以下結果..(截取片段) ==1062== HEAP SUMMARY: ==1062== in use at exit: 132,574 bytes in 41 blocks ==1062== total heap usage: 97 allocs, 56 frees, 163,638 bytes allocated ==1062== ==1062== 136 bytes in 1 blocks are possibly lost in loss record 2 of 3 ==1062== at 0x482C778: calloc (in /usr/lib/valgrind/vgpreload_memcheck-arm-linux.so) ==1062== ==1062== LEAK SUMMARY: ==1062== definitely lost: 0 bytes in 0 blocks ==1062== indirectly lost: 0 bytes in 0 blocks ==1062== possibly lost: 136 bytes in 1 blocks ==1062== still reachable: 132,438 bytes in 40 blocks ==1062== suppressed: 0 bytes in 0 blocks ==1062== Reachable blocks (those to which a pointer was found) are not shown. ==1062== To see them, rerun with: --leak-check=full --show-reachable=yes ==1062== ==1062== For counts of detected and suppressed errors, rerun with: -v ==1062== Use --track-origins=yes to see where uninitialised values come from ==1062== ERROR SUMMARY: 5 errors from 5 contexts (suppressed: 1 from 1) Killed ---------------------- -------------------- 目前打算先找出這5個錯誤,謝謝大家,會再上來回報^^ ※ 編輯: BIAO (140.124.42.70), 05/06/2014 16:31:33
7F:→ bitlife:稍微捲著看了一下程式,你另外要注意row有可能不是標準的 05/06 17:41
8F:→ bitlife:null-terminated string,你把它放進str開頭的函數可能會出 05/06 17:42
9F:→ bitlife:問題,這是我瞄完第一個感覺.反正就是每個s開頭和字串相關 05/06 17:43
10F:→ bitlife:的函數,你就要思考它的參數有沒有可能是非0結尾字串,這是 05/06 17:44
11F:→ bitlife:常見的core dump來源之一 05/06 17:44
謝謝b大的熱心回覆, 原來有非0結尾的字串@@" 那麼str系列都只能處理"0結尾的字串"嗎!? 另想請問..若是非0字串和為0字串相比較的話, 在記憶體空間會產什麼樣的問題呢!? 因為該段程式是比較字串若相等,則做什麼事情.. 而程式也的確有依照要求去執行對應的動作(讀取設備資訊), 所以資料庫內也有產生設備資訊,故小弟也沒想太多/.\ 這一~二天有閱讀關於C語言和記憶體配置的文件, 若您不嫌棄的話,可否簡短的敘述一下為什麼會產生問題, 謝謝您.. :D ※ 編輯: BIAO (140.124.42.70), 05/06/2014 17:55:48
12F:→ bitlife:以strcpy為例,你copy一段不是「0結尾字串」的資料(例如二 05/06 17:59
13F:→ bitlife:進位資料),strcpy函數就會一直copy到遇到0,萬一讀到非你能 05/06 17:59
14F:→ bitlife:讀取的address前都碰不到0,會讀進無權讀取區,就SIGSEGV了 05/06 18:00
15F:→ bitlife:你是接手維護嗎?能寫出這個程式,應該懂上述這基本概念 05/06 18:01
謝謝b大的詳細解釋,小弟明白了。 我不是接手維護,而是程式開發者, 是自己看書學,或是需要什麼函式就上網查詢, 由於有時程壓力,所以程式底子並沒有很好。 其實我先前並不了解記憶體管理的重要性, 現在終於自食惡果了... XD ※ 編輯: BIAO (140.124.42.70), 05/06/2014 18:16:35







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

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

TOP