Re: [問題]Segmentation Fault

看板Fortran作者 (史瑞克)時間14年前 (2010/06/29 02:34), 編輯推噓1(109)
留言10則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《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)

06/29 12:04, , 1F
最近還遇到同一個code在超大型smp可以跑,但是放到
06/29 12:04, 1F

06/29 12:05, , 2F
cluster架構上跑就一直出現這種錯誤,後來有經驗的教授
06/29 12:05, 2F

06/29 12:06, , 3F
跟我說dummy argument不能太大,全部改過才ok
06/29 12:06, 3F

06/29 12:07, , 4F
不過連MPI subroutine的dummy argu也不能給太大,結果
06/29 12:07, 4F

06/29 12:07, , 5F
只能放loop慢慢跑,速度又慢了一點了
06/29 12:07, 5F

06/29 12:14, , 6F
還有連array宣告都不能太大,大的只能放common block
06/29 12:14, 6F

06/29 12:17, , 7F
不過台灣為什麼都沒有大型SMP
06/29 12:17, 7F

06/29 13:36, , 8F
原來如此,初學時都是副程式陣列傳錯才有這個錯誤。
06/29 13:36, 8F

06/30 13:32, , 9F
通常我都加-g編譯,然後用gdb來檢查core dump的檔案
06/30 13:32, 9F

06/30 13:33, , 10F
這樣比較好檢查到錯誤發生點,然後在想看看問題在哪
06/30 13:33, 10F
文章代碼(AID): #1CAEiPbH (Fortran)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1CAEiPbH (Fortran)