Aumentando o limite de pilha no OS X Yosemite


12

Estou procurando uma maneira de (não necessariamente permanentemente) aumentar o tamanho da pilha disponível para aplicativos de terminal no OS X 10.10.

Eu sei que existem muitas perguntas relacionadas à alteração de variáveis ​​de ambiente, incluindo limite de pilha, na Internet e aqui em particular (por exemplo, essa ), mas nenhuma das soluções propostas que encontrei parece funcionar para mim.

O máximo que eu ganho launchctlé usar sudo launchctl limit stack 67104768 67104768onde 67104768 é o limite rígido padrão. Outros launchctlcomandos com limites mais altos parecem não ter efeito.

Depois, há sysctl, mas suas páginas de manual são kern.stack_sizeimutáveis.

Espero não ter esquecido nenhuma solução que já tenha sido proposta em algum lugar; Qualquer ajuda seria muito apreciada!

Edit: Gostaria de aumentar o limite da pilha para solucionar o que parece ser um bug no ocamlopt, o compilador nativo do OCaml, que transborda a pilha processando um programa (sensível) específico; Não consigo encontrar o relatório de erros no momento.


1
Você está perguntando explicitamente como aumentar o limite de pilhas do Yosemite?

1
Sim. Desculpe, se isso não ficou claro no texto.
214 Christopher Christopher

1
Encontrei uma pergunta em superuser.com/questions/836883/… que pode ajudá-lo ... Na primeira resposta, ele mostra um limite de maxfiles. Talvez altere para empilhar o limite e salve como limit.stack.plistlaunchDaemons?
precisa saber é o seguinte

1
Obrigado! Eu apenas tentei isso, mas sem sorte.
Christopher

1
Está bem. E você realmente encontrou o arquivo limite? Se não estiver lá. Vou gastar tempo procurando e solucionando o problema. E configurando essa lista que eu instruí anteriormente.
precisa saber é o seguinte

Respostas:


5

Uma maneira de aumentar o tamanho da pilha é usar ulimit:

shell> ulimit -s new_size_in_kb

Lembre-se de que parece haver um limite rígido para o tamanho da pilha no OSX e esse limite parece ser 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

Também ulimit -sé temporário e redefine quando a sessão do terminal termina.

Se você deseja garantir que a pilha seja aumentada para cada sessão do terminal, você pode colocar o ulimit -scomando no seu .zshrc ou equivalente.


Obrigado por isso! Infelizmente, nesse caso em particular, eu preciso aumentar o tamanho da pilha além do limite rígido do OSX e esperava encontrar uma solução que aumente esse limite.
Christopher

Sim: também ulimit -s unlimitedparece ser limitada a 65532 Kb: ulimit -a | grep stack-s: stack size (kbytes) 65532
fpierfed
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.