作者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