请教版主:关于堆栈的设置(我快疯了)
我是远程登陆一台并行机,其系统是CentOS release 4.4 (Final) Kernel \r on an \m
,要求运行一个模式,老是出现segment fault,然后我就到开发模式的单位去请求帮助,他们告诉我增加堆栈的大小,用ulimit -s unlimited命令,
出现了 -bash: ulimit: stack size: cannot modify limit: Operation not permitted,也就是无法修改,于是我到网上找了一些资料,说需要在/etc/profile中ulimit -S -c 0> /dev/null 2>&1后面增加该语句 ulimit -s unlimited。于是我去找管理员这么做了。但是当我用我的普通用户登陆,堆栈依然没有改变,并且在登陆的时候出现了一句:
-bash: ulimit: stack size: cannot modify limit: Operation not permitted
和上面的错误是一样的,我现在不知道要怎么改了,找管理员都很多次了,人家都烦了,我却搞不定,要疯了,请版主帮帮忙,谢谢了!下面是我用ulimit -a 的结果
[guest@node1 init.d]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 16384
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 40960
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimite
freekiller 于 2008-12-24 19:13:57发表:
谢谢
deepwhite 于 2008-12-16 10:26:43发表:
[quote]原帖由 freekiller 于 2008-12-15 16:51 发表
你执行一下
[code]ulimit -H
ulimit -S[/code]
看看输出是什么?如果结果不是unlimited的话,那么就执行以下的语句:
[code]ulimit -H unlimited
ulimit -S unlimited
ulimit -s unlimited[/code]
有可能是因为你设置的stack limit 超过了hard limit 和soft limit而引起的错误。
如果你没有权限设置hard/soft limit (ulimit -H unlimited和 ulimit -S unlimited)的话就让管理员执行这两句;最后你在自己执行一下[code]ulimit -s unlimited[/code]就应该可以了。
(http://www.nabble.com/strage-behaviour-of-ulimit-td20701924.html, You can have a look at this)
另外,一般来讲程序出现segment fault的时候可能不是你的问题,很可能是程序本身的问题,比如程序的越界或者访问内存出错等等。我只是说可能,但不敢保证。你最好让开发者确认一下在相同的软硬件环境下该程序是否可以正常运行。
祝一切顺利!
[ 本帖最后由 deepwhite 于 2008-12-16 10:51 编辑 ]