Я ищу способ (не обязательно) увеличить размер стека, доступного для терминальных приложений в OS X 10.10.
Я знаю, что есть много вопросов, связанных с изменением переменных среды, включая ограничение стека, в Интернете и, в частности, здесь (например, это ), но ни одно из предложенных мной решений, кажется, не работает для меня.
Максимум, что я получаю, launchctl
это использование sudo launchctl limit stack 67104768 67104768
где 67104768 - это жесткое ограничение по умолчанию. Другие launchctl
команды с более высокими пределами, кажется, не имеют никакого эффекта.
Тогда есть sysctl
, но его страницы руководства сообщают kern.stack_size
как неизменяемые.
Я надеюсь, что я не упустил из виду какие-либо решения, которые уже были предложены где-то; любая помощь будет принята с благодарностью!
Редактировать: я хотел бы увеличить ограничение стека, чтобы обойти то, что кажется ошибкой в ocamlopt, нативном компиляторе OCaml, который переполняет стек при обработке определенной (разумной) программы; Я не могу найти отчет об ошибке прямо сейчас.
limit.stack.plist
в launchDaemons?Ответы:
Одним из способов увеличения размера стека является использование
ulimit
:Просто имейте в виду, что, как представляется, существует жесткое ограничение на размер стека в OSX, и этот предел составляет 65532 КБ:
Также
ulimit -s
является временным и сбрасывается после завершения сеанса терминала.Если вы хотите убедиться, что стек увеличивается для каждой терминальной сессии, вы можете поместить
ulimit -s
команду в свой .zshrc или эквивалентный.источник
ulimit -s unlimited
кажется, что он ограничен 65532 Кб:ulimit -a | grep stack
дает-s: stack size (kbytes) 65532