bash: ulimit: tamaño del archivo central: no se puede modificar el límite: operación no permitida

28

Fedora 12 gcc 4.4.1

Estoy haciendo algo de programación, y mi programa me dio un volcado de pila.

Sin embargo, no hay un archivo central que pueda examinar.

Así que lo hice:

ulimit -c unlimited

y recibí este mensaje de error:

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

También intenté configurar ulimit en 50000 y aún obtuve el mismo error.

Los 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
fuente

Respuestas:

25

Grep para una configuración de límite duro en sus archivos de inicialización de bash. Desde la página de manual de bash .

No se puede aumentar un límite rígido una vez que se establece; un límite suave puede incrementarse hasta el valor del límite duro.

El límite duro se establece a través de la bandera ulimit -H. Se puede configurar en / etc / bash * o / etc / profile * archivos. Busque una configuración ulimit -Hc.

Darren Hall
fuente
man ulimit: si no se especifica -H ni -S, se establecen los límites blando y duro . Por lo tanto, buscar -H o -S no necesariamente lo llevará a la solución correcta. Simplemente grep para ulimit y luego descubra si -H o -S o ambos están implícitamente configurados. Por supuesto, esto es una década más tarde, por lo que el comportamiento o las páginas de manual podrían haberse actualizado desde la pregunta / respuesta original.
Jim
1

Me sucedió esto cuando lo usé dropbearcomo servidor SSH. Aparentemente, dropbear establece algunos límites estrictos antes de generar tu caparazón.

Cambiar a OpenSSH resolvió el problema.

Barry Brown
fuente
En efecto. Justo al comienzo de main () hay una llamada a disallow_core (), que llama a setrlimit (2). Por razones de seguridad, por supuesto, pero debe haber una mejor manera. github.com/mkj/dropbear/blob/master/svr-main.c
Sundae