增加OS X Yosemite中的堆栈限制


12

我正在寻找一种方法(不一定永久地)增加OS X 10.10中终端应用程序可用的堆栈大小。

我知道在互联网上,尤其是在这里,有很多与更改环境变量(包括堆栈限制)有关的问题(例如,这一问题),但是我发现的所有提议解决方案似乎都不适合我。

我最大的收获launchctl是使用sudo launchctl limit stack 67104768 67104768默认的硬限制67104768。launchctl具有更高限制的其他命令似乎无效。

然后是sysctl,但是其手册页报告kern.stack_size为不可更改。

我希望我不要忽视已经在某处提出的任何解决方案;任何帮助将不胜感激!

编辑:我想增加堆栈限制,以解决ocamlopt(OCaml本机编译器)中似乎是一个错误的问题,该错误导致堆栈溢出处理特定的(明智的)程序;我似乎现在找不到错误报告。


1
您是否明确询问如何增加优胜美地的筹码限额?

1
是。抱歉,如果文字不清楚。
Christopher

1
我在superuser.com/questions/836883/上发现了一个问题,可能会帮助您...在第一个答案中,它显示了一个maxfiles限制。也许将其更改为堆栈限制并另存为limit.stack.plistlaunchDaemons?
TheBro21

1
谢谢!我只是尝试过,但是没有运气。
Christopher

1
好。您实际上找到了限制文件吗?如果不存在。我将花时间寻找并解决问题。并配置了我先前指示的plist。
TheBro21 2015年

Answers:


5

增加堆栈大小的一种方法是使用ulimit

shell> ulimit -s new_size_in_kb

请记住,在OSX上堆栈的大小似乎有一个硬性限制,该限制似乎是65532 kb:

shell> ulimit -s 65533
ulimit: value exceeds hard limit
shell> ulimit -s 65532
shell> ulimit -a | grep stack
-s: stack size (kbytes)             65532

ulimit -s也是临时的,一旦终端会话结束就重置。

如果要确保为每个终端会话增加堆栈,可以将ulimit -s命令放入.zshrc或等效命令中。


感谢那!不幸的是,在这种情况下,我需要增加堆栈大小,使其超过OSX的硬限制,而我希望找到一种解决方案来增加此限制。
Christopher

是的:ulimit -s unlimited似乎也仅限于65532 Kb:ulimit -a | grep stack给出-s: stack size (kbytes) 65532
fpierfed 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.