Увеличение лимита стека в OS X Yosemite

12

Я ищу способ (не обязательно) увеличить размер стека, доступного для терминальных приложений в OS X 10.10.

Я знаю, что есть много вопросов, связанных с изменением переменных среды, включая ограничение стека, в Интернете и, в частности, здесь (например, это ), но ни одно из предложенных мной решений, кажется, не работает для меня.

Максимум, что я получаю, launchctlэто использование sudo launchctl limit stack 67104768 67104768где 67104768 - это жесткое ограничение по умолчанию. Другие launchctlкоманды с более высокими пределами, кажется, не имеют никакого эффекта.

Тогда есть sysctl, но его страницы руководства сообщают kern.stack_sizeкак неизменяемые.

Я надеюсь, что я не упустил из виду какие-либо решения, которые уже были предложены где-то; любая помощь будет принята с благодарностью!

Редактировать: я хотел бы увеличить ограничение стека, чтобы обойти то, что кажется ошибкой в ​​ocamlopt, нативном компиляторе OCaml, который переполняет стек при обработке определенной (разумной) программы; Я не могу найти отчет об ошибке прямо сейчас.

Кристофер
источник
1
Вы явно спрашиваете, как увеличить лимит стека Yosemite?
1
Да. Извините, если это не ясно из текста.
Кристофер
1
Я нашел вопрос на сайте superuser.com/questions/836883/… который может вам помочь ... В первом ответе показан предел maxfiles. Возможно, измените его на ограничение стека и сохраните как limit.stack.plistв launchDaemons?
TheBro21
1
Благодарность! Я только что попробовал, но не повезло.
Кристофер
1
Ok. И вы действительно нашли файл лимита? Если его там нет. Я буду тратить время на его поиск и устранение проблемы. И настройку этого списка я указывал ранее.
TheBro21

Ответы:

5

Одним из способов увеличения размера стека является использование ulimit:

shell> ulimit -s new_size_in_kb

Просто имейте в виду, что, как представляется, существует жесткое ограничение на размер стека в OSX, и этот предел составляет 65532 КБ:

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 или эквивалентный.

fpierfed
источник
Спасибо за это! К сожалению, в этом конкретном случае мне нужно увеличить размер стека сверх жесткого предела OSX, и я надеялся найти решение, которое увеличит этот предел.
Кристофер
Да, также ulimit -s unlimitedкажется, что он ограничен 65532 Кб: ulimit -a | grep stackдает-s: stack size (kbytes) 65532
fpierfed