Підвищення межі стека в OS X Yosemite


12

Я шукаю спосіб (не обов'язково постійно) збільшувати розмір стека, доступний для термінальних додатків в ОС 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в запускDaemons?
TheBro21

1
Дякую! Я просто спробував це, але не пощастило.
Крістофер

1
Гаразд. А ви дійсно знайшли файл ліміту? Якщо його там немає. Я витрачу час на його пошуки та вирішення проблеми. І налаштовувати цей пліст я доручив раніше.
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 або еквівалент.


Дякую за це! На жаль, у цьому конкретному випадку мені потрібно збільшити розмір стека за межею жорсткої межі OSX, і я сподівався знайти рішення, яке збільшує цей ліміт.
Крістофер

Так: також, ulimit -s unlimitedздається, обмежено 65532 Кб: ulimit -a | grep stackдає-s: stack size (kbytes) 65532
fpierfed
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.