作者shrekwang (史瑞克)
看板Fortran
標題Re: [問題]Segmentation Fault
時間Tue Jun 29 02:33:59 2010
※ 引述《linigirl ()》之銘言:
: 因為實驗室的環境,只能遠端到工作站在Linux作業系統下用G77 compiler,
: compile結果沒問題,但是執行後卻出現Segmentation Fault,
: 上網google,建議命令列輸入ulimit -s unlimited,
: 也就是和本版前面文章"Stack Flow"記憶體大小改成unlimited,
: 但執行後仍然有segmentation fault的問題,
: 而且我寫的程式碼也沒有矩陣這樣的東西,
: 不知道還有可能是什麼問題造成segmentation fault,
: 請問各位有經驗的人士,能幫我這初學者解答嗎?
: 通常是什麼問題會造成這樣的錯誤訊息呢?
: 謝謝
Segmentation fault只有一個情況才會出現
那就是你的程式在記憶體存取時候管到不該管的地方
嘗試提取別的程式使用的記憶體裡面的資料
被作業系統發現強制踢出
(個人習慣講「程式撞牆」)
不一定只有array提取會這樣
Linked List也常常遇到
某些Segmentation fault有可能從compiler上抓到
不過樓主用gfortran編譯起來還抓不到的話
代表compiler沒有找到
compiler的功能只是檢查宣告和語法有沒有問題而已
然後編譯成X86或Assembly Language 再轉成機器語言
遇到Segmentation fault的解決辦法只有一個:
請檢查程式,想想看那一個環節提取記憶體錯誤讓你的程式撞牆
update:剛才測試,某些segmentation fault是可以抓到...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.135.31.3
※ 編輯: shrekwang 來自: 140.135.31.3 (06/29 02:36)
※ 編輯: shrekwang 來自: 140.135.31.3 (06/29 02:47)
※ 編輯: shrekwang 來自: 140.135.31.3 (06/29 02:49)
※ 編輯: shrekwang 來自: 140.135.31.3 (06/29 11:04)
1F:→ onezillion:最近還遇到同一個code在超大型smp可以跑,但是放到 06/29 12:04
2F:→ onezillion:cluster架構上跑就一直出現這種錯誤,後來有經驗的教授 06/29 12:05
3F:→ onezillion:跟我說dummy argument不能太大,全部改過才ok 06/29 12:06
4F:→ onezillion:不過連MPI subroutine的dummy argu也不能給太大,結果 06/29 12:07
5F:→ onezillion:只能放loop慢慢跑,速度又慢了一點了 06/29 12:07
6F:→ onezillion:還有連array宣告都不能太大,大的只能放common block 06/29 12:14
7F:→ onezillion:不過台灣為什麼都沒有大型SMP 06/29 12:17
8F:→ blc:原來如此,初學時都是副程式陣列傳錯才有這個錯誤。 06/29 13:36
9F:推 hiyiyi:通常我都加-g編譯,然後用gdb來檢查core dump的檔案 06/30 13:32
10F:→ hiyiyi:這樣比較好檢查到錯誤發生點,然後在想看看問題在哪 06/30 13:33