¿No hay volcados de núcleo después de actualizaciones recientes a systemd?

12

Cuando ejecuto un programa en el que trabajo, falla con el siguiente mensaje:

...
Aborted (core dumped)

Sin embargo, no se crea un volcado de núcleo. Los volcados de núcleo se escribieron anteriormente, y no recuerdo que haya cambiado nada relacionado con él.

Cuando corro ulimit -aregreso

$ ulimit -a
core file size          (blocks, -c) unlimited
...

Otros puntos,

  • Verifiqué que mi usuario puede crear archivos en el directorio actual.
  • He leído acerca /proc/sys/fs/suid_dumpable. Actualmente, está configurado en 0 en mi máquina. Traté de cambiarlo a 1 o 2 pero no hay diferencia.
  • También intenté ejecutar el programa como root, pero eso tampoco marcó la diferencia.

Desafortunadamente, no recuerdo cuándo pude producir el último volcado de núcleo exitoso.

Philipp Claßen
fuente

Respuestas:

8

De los documentos en adelante coredump.conf,

Para deshabilitar un archivo de configuración proporcionado por el proveedor, la forma recomendada es colocar un enlace simbólico /dev/nullen el directorio de configuración /etc/, con el mismo nombre de archivo que el archivo de configuración del proveedor.

sudo ln -s /dev/null /etc/sysctl.d/coredump.conf
sudo systemd-sysctl 

Desde systemd, las cosas se gestionan de manera diferente.

schaiba
fuente
Wow, tienes razón! No hace mucho cambié a systemd. sudo systemd-coredumpctlmuestra todos los volcados de núcleo faltantes. Su solución funcionó, pero solo después de reiniciar el sistema.
Philipp Claßen
1
systemd's systemd-sysctl.servicesólo se ejecuta sysctlen el punto adecuado de arranque, y las manijas de volver a ejecutar por parte de los cambios. Y no vaya a crear / sobrescribir archivos de configuración sin investigar para qué son y sus contenidos.
vonbrand
1
El nombre del archivo parece haber cambiado 50-coredump.conf, para poder aplicar la configuración en el arranque actual, tuve que ejecutar cambiar la configuración de sysctl manualmente, ver stackoverflow.com/q/2065912/427545 .
Lekensteyn
2
Para restaurar el valor predeterminado, no establezca una cadena vacía, use esto en su lugar:sysctl -w kernel.core_pattern="core"
Lekensteyn
2

Es posible que desee utilizar el coredumpctlcomando para recuperar su volcado de núcleo o ejecutar gdb en él. Ese es el método 'aprobado por systemd' para tratar con ellos. : - /

En cierto sentido, es agradable que systemd esté capturando todas estas cosas porque las borrará automáticamente después de un tiempo, y también facilita la carga de volcados de memoria para informes de errores.

Sin embargo, fue un cambio discordante con poca notificación o sugerencias para las personas que sabían cómo funcionaban los coredumps antes de que systemd se involucrara. Incluso soltar un archivo llamado 'core.pid.txt' con instrucciones para usar coredumpctl para obtener su coredump y cómo desactivar la creación de los .txtarchivos hubiera sido de gran ayuda, a pesar de que también habrían ensuciado el sistema de archivos por un tiempo.

De todo género
fuente