Augmenter la limite de pile dans OS X Yosemite

12

Je cherche un moyen d'augmenter (pas nécessairement de façon permanente) la taille de la pile disponible pour les applications terminales dans OS X 10.10.

Je sais qu'il y a beaucoup de questions liées à l'évolution des variables d'environnement, y compris la limite de pile, sur Internet et ici en particulier (par exemple celle-ci ), mais aucune des solutions proposées que j'ai trouvées ne semble fonctionner pour moi.

Le maximum que j'en retire launchctlest d'utiliser sudo launchctl limit stack 67104768 67104768où 67104768 est la limite fixe par défaut. D'autres launchctlcommandes avec des limites plus élevées semblent n'avoir aucun effet.

Ensuite, il y en a sysctl, mais ses pages de manuel indiquent kern.stack_sizequ'elles sont immuables.

J'espère que je n'ai pas oublié de solutions qui ont déjà été proposées quelque part; toute aide serait grandement appréciée!

Edit: Je voudrais augmenter la limite de pile pour contourner ce qui semble être un bogue dans ocamlopt, le compilateur natif OCaml, qui déborde la pile en traitant un programme particulier (sensible); Je n'arrive pas à trouver le rapport de bogue en ce moment.

Christophe
la source
1
Demandez-vous explicitement comment augmenter la limite de pile de Yosemite?
1
Oui. Désolé, si cela n'était pas clair dans le texte.
Christopher
1
J'ai trouvé une question sur superuser.com/questions/836883/… qui pourrait vous aider ... Dans la première réponse, elle montre une limite de maxfiles. Peut-être le changer pour limiter la pile et l'enregistrer limit.stack.plistdans launchDaemons?
TheBro21
1
Merci! J'ai juste essayé ça, mais pas de chance.
Christopher
1
D'accord. Et avez-vous réellement trouvé le fichier de limite? S'il n'est pas là. Je vais passer du temps à le chercher et à résoudre le problème. Et la configuration de ce plist, j'ai demandé plus tôt.
TheBro21

Réponses:

5

Une façon d'augmenter la taille de la pile consiste à utiliser ulimit:

shell> ulimit -s new_size_in_kb

Gardez à l'esprit qu'il semble y avoir une limite stricte sur la taille de la pile sur OSX et que cette limite semble être de 65532 ko:

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

Est également ulimit -stemporaire et se réinitialise une fois la session terminale terminée.

Si vous voulez vous assurer que la pile est augmentée pour chaque session de terminal, vous pouvez mettre la ulimit -scommande dans votre .zshrc ou équivalent.

fpierfed
la source
Merci pour ça! Malheureusement, dans ce cas particulier, j'ai besoin d'augmenter la taille de la pile au-delà de la limite stricte d'OSX et j'espérais trouver une solution qui augmenterait cette limite.
Christopher
Ouais: aussi un ulimit -s unlimitedsemble être limité à 65532 Ko: ulimit -a | grep stackdonne-s: stack size (kbytes) 65532
fpierfed