Aumentare il limite di stack in OS X Yosemite


12

Sto cercando un modo (non necessariamente permanente) per aumentare la dimensione dello stack disponibile per le applicazioni terminali in OS X 10.10.

So che ci sono molte domande relative al cambiamento delle variabili di ambiente, incluso il limite dello stack, su Internet e qui in particolare (ad esempio questo ), ma nessuna delle soluzioni proposte che ho trovato sembra funzionare per me.

Il massimo che ne esco launchctlè usare sudo launchctl limit stack 67104768 67104768dove 67104768 è il limite rigido predefinito. Altri launchctlcomandi con limiti superiori sembrano non avere alcun effetto.

Poi c'è sysctl, ma le sue pagine man sono kern.stack_sizeimmutabili.

Spero di non aver trascurato nessuna soluzione che sia già stata proposta da qualche parte; Qualsiasi aiuto sarebbe molto apprezzato!

Modifica: Vorrei aumentare il limite dello stack per aggirare quello che sembra essere un bug in ocamlopt, il compilatore nativo OCaml, che lo stack-overflow elabora un particolare programma (sensibile); Non riesco a trovare la segnalazione di bug in questo momento.


1
Stai chiedendo esplicitamente come aumentare il limite di stack di Yosemite?

1
Sì. Scusa, se non fosse chiaro dal testo.
Christopher,

1
Ho trovato una domanda su superuser.com/questions/836883/… che potrebbe aiutarti ... Nella prima risposta, mostra un limite di maxfile. Forse cambiarlo in limite dello stack e salvarlo come limit.stack.plistin launchDaemons?
TheBro21

1
Grazie! Ci ho appena provato, ma senza fortuna.
Christopher,

1
Ok. E hai effettivamente trovato il file limite? Se non è lì. Passerò il tempo a cercarlo e a risolvere il problema. E configurando quel plist che ho incaricato in precedenza.
TheBro21,

Risposte:


5

Un modo per aumentare le dimensioni dello stack è utilizzare ulimit:

shell> ulimit -s new_size_in_kb

Tieni solo presente che sembra esserci un limite rigido a quanto può essere grande lo stack su OSX e tale limite sembra essere 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

Inoltre ulimit -sè temporaneo e si ripristina al termine della sessione del terminale.

Se vuoi assicurarti che lo stack sia aumentato per ogni sessione terminale, puoi inserire il ulimit -scomando nel tuo .zshrc o equivalente.


Grazie per quello! Sfortunatamente in questo caso particolare ho bisogno di aumentare le dimensioni dello stack oltre il limite rigido di OSX e speravo di trovare una soluzione che aumentasse questo limite.
Christopher,

Sì: anche a ulimit -s unlimitedsembra essere limitato a 65532 Kb: ulimit -a | grep stack-s: stack size (kbytes) 65532
fpierfed
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.