精華區beta Fortran 關於我們 聯絡資訊
※ 引述《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)
onezillion:最近還遇到同一個code在超大型smp可以跑,但是放到 06/29 12:04
onezillion:cluster架構上跑就一直出現這種錯誤,後來有經驗的教授 06/29 12:05
onezillion:跟我說dummy argument不能太大,全部改過才ok 06/29 12:06
onezillion:不過連MPI subroutine的dummy argu也不能給太大,結果 06/29 12:07
onezillion:只能放loop慢慢跑,速度又慢了一點了 06/29 12:07
onezillion:還有連array宣告都不能太大,大的只能放common block 06/29 12:14
onezillion:不過台灣為什麼都沒有大型SMP 06/29 12:17
blc:原來如此,初學時都是副程式陣列傳錯才有這個錯誤。 06/29 13:36
hiyiyi:通常我都加-g編譯,然後用gdb來檢查core dump的檔案 06/30 13:32
hiyiyi:這樣比較好檢查到錯誤發生點,然後在想看看問題在哪 06/30 13:33