bash: ulimit: tamanho do arquivo principal: não é possível modificar o limite: operação não permitida

28

Fedora 12 gcc 4.4.1

Estou fazendo alguma programação, e meu programa me deu um despejo de pilha.

No entanto, não há arquivo principal para eu examinar.

Então eu fiz:

ulimit -c unlimited

e recebeu esta mensagem de erro:

bash: ulimit: core file size: cannot modify limit: Operation not permitted

Também tentei definir o ulimit como 50000 e ainda recebi o mesmo erro.

Os resultados de ulimit -a:

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 12275
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
ant2009
fonte

Respostas:

25

Grep para uma configuração de limite rígido nos arquivos de inicialização do bash. Na página do manual do bash .

Um limite rígido não pode ser aumentado depois de definido; um limite flexível pode ser aumentado até o valor do limite rígido.

O limite rígido é definido através do sinalizador ulimit -H. Pode ser definido nos arquivos / etc / bash * ou / etc / profile *. Procure uma configuração ulimit -Hc.

Darren Hall
fonte
man ulimit: Se nem -H nem -S for especificado, os limites flexível e rígido serão configurados . Portanto, procurar -H ou -S não necessariamente leva à solução correta. Apenas grep para ulimit e descubra se -H ou -S ou ambos estão implicitamente definidos. Obviamente, isso é uma década depois, portanto o comportamento ou as páginas de manual podem ter sido atualizadas desde a pergunta / resposta original.
Jim
1

Isso aconteceu comigo quando usei dropbearcomo servidor SSH. Aparentemente, o dropbear estabelece alguns limites rígidos antes de gerar seu shell.

Mudar para o OpenSSH resolveu o problema.

Barry Brown
fonte
De fato. Logo no início de main () há uma chamada para disallow_core (), que chama setrlimit (2). Por razões de segurança, é claro, mas deve haver uma maneira melhor. github.com/mkj/dropbear/blob/master/svr-main.c
Sundae