蠢死了。
昨天發生一件疑似奇事 (其實已經發生了一年多, 昏):Intel Fortran Compiler (ifort) 8.1 編好的程式在 FC3 上可以跑,但在 sarge 裡會 segmentation fault。
本來以為是編譯器的問題,所以在兩邊編譯,參數相同,拿到兩邊去執行;結果 sarge 還是 seg fault,FC3 還是能跑。
glibc 的問題?FC3 用 2.3.3,sarge 用 2.3.2。Intel Release Note 裡面也說要用 2.3.2,看起來不像。
弄了一個多小時沒有結果。感謝 AndrewLee 提示我一個好用的工具 strace ,可以在執行期監視程式作的系統呼叫;可惜沒有幫助,我本來就知道出錯的程式位置了。
結果同事昨天回家狠拜了 google 大神之後,發現原來是 stack 太小。
真是欠學 。
sarge 預設 ulimit -s 8192 ,FC3 預設 ulimit -s 10240 ,就這樣。
為什麼說已經發生了一年多呢?因為自從 ifort 8.0 之後就有這個問題,我們一直以為是程式寫不好,也沒有拿到其它平台上測;ifort 編出來的程式又只抱怨 segmentation fault,不像 Compaq Visual Fortran 會叫 stack overflow/underflow。
很好,很好,ifort 9 今天也測了一下,都沒有問題了。
Navigate
- Previous: 天上天下半身像 @2005/06/20
- Next: 又在 sarge 上裝了好幾次 Intel Compiler @2005/06/22
Add a trackback
Please send trackback to: http://blog.seety.org/everydaywork/2005/6/22/362/trackback/.
Comments
Re: sarge 和 Fedore Core 3 的 stack maximum 預設得不一樣
Visual Fortran 的 stack size 是寫在 executable image (i.e. ".exe" file) 裡的,印象中是用 linker (cl.exe) 設定。
我手上沒有合法的 VF,以上的訊息只憑印象回答。
我手上沒有合法的 VF,以上的訊息只憑印象回答。
yungyuc
at 2006-08-03 19:42.
Re: sarge 和 Fedore Core 3 的 stack maximum 預設得不一樣
不好意思...我也出現stack overflow..但看不是很懂你是從哪裡做修改它的stack size...可以將修改方式告知我嗎....寄到我的信箱 92343024@cc.ncu.edu.tw
benson
at 2007-10-17 11:30.
Add a comment
我是個新手,最近執行同事寫好的fortran,
執行Visual Fortran也出現了stack overflow的訊息,
循著Google找到這裡,
可以請您指導如何設定Visual Fortran上的這個問題嗎?
感激不禁!