求教关于linux的堆栈设置

higoalhwl 2014-07-15 09:42:00
最近在开发程序中遇到了linux堆栈的问题,有一些疑惑想请教大家。

现象如下:
程序启动时会段错误,ulimit -s 查看此时系统的stack size是unlimited。手工修改ulimit -s 8192后,再启动程序运行正常。
服务器重启时,程序通过开机启动脚本自动加载,在开机启动脚本中打印ulimit -s返回的是8192,因此机器重启时程序可以正常运行。此时通过shell终端连到服务器,手工杀掉程序后再手工启动,程序段错误,此时查看ulimit -s显示为unlimited。

我的问题如下:
1. unlimited到底表示的是什么含义,为什么设成不限制,反而会有statck size不够的现象呢?系统中是不是有配置文件定义了unlimited默认的最大stack size。这个配置文件在哪?
2. 我已经知道命令行设置stack size是对当前用户,当前shell生效的,那如果我希望对所有用户,所有shell生效的话,该如何操作?
...全文
213 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
higoalhwl 2014-07-17
  • 打赏
  • 举报
回复
引用 5 楼 linlan999 的回复:
stack size是进程的属性; 进程的属性是通过继承的,当然进程也可以在起来后自己设置; 1 感觉不应该出现; 2 可以在你的代码中设置: http://stackoverflow.com/questions/2279052/increase-stack-size-in-linux-with-setrlimit
关键就是第一个问题让我疑惑,我所使用的服务器是经过裁剪的,可能和这个有关吗?
linlan999 2014-07-16
  • 打赏
  • 举报
回复
stack size是进程的属性; 进程的属性是通过继承的,当然进程也可以在起来后自己设置; 1 感觉不应该出现; 2 可以在你的代码中设置: http://stackoverflow.com/questions/2279052/increase-stack-size-in-linux-with-setrlimit
liugou110 2014-07-16
  • 打赏
  • 举报
回复
这个 我也不是很懂哦
higoalhwl 2014-07-15
  • 打赏
  • 举报
回复
gdb看过了,段在sprintf里,原因不明。所有的针指打印出来都可以正常访问。应该和代码的关系不大。
colddown 2014-07-15
  • 打赏
  • 举报
回复
感觉还是应该用gdb看下为什么会出错
whut_lcy 2014-07-15
  • 打赏
  • 举报
回复
修改 /etc/profile 先grep ulimit /etc/profile

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧