Leer /usr/src/linux/Documentación/sysctl/kernel.txt.
core_pattern se utiliza para especificar un nombre de patrón de archivo de volcado de núcleo.
- Si el primer carácter del patrón es '|', el kernel tratará el resto del patrón como un comando para ejecutar. El volcado del núcleo se escribirá en la entrada estándar de ese programa en lugar de en un archivo.
En lugar de escribir el volcado del núcleo en el disco, su sistema está configurado para enviarlo al abrt
(que significa:Herramienta de notificación automática de errores, no programa "abortar") en su lugar. Es posible que la herramienta de notificación automática de errores no esté tan documentada como debería...
En cualquier caso, la respuesta rápida es que debería poder encontrar su archivo principal en /var/cache/abrt
, donde abrt
lo almacena después de ser invocado. De manera similar, otros sistemas que usan Apport pueden almacenar núcleos en /var/crash
, y así sucesivamente.
En Ubuntu reciente (12.04 en mi caso), es posible que se imprima "Error de segmentación (núcleo volcado)", pero no se produce ningún archivo central donde podría esperar uno (por ejemplo, para un programa compilado localmente).
Esto puede suceder si tiene un límite de tamaño de archivo central de 0 (no ha hecho ulimit -c unlimited
) -- este es el valor predeterminado en Ubuntu. Normalmente, eso suprimiría el "(núcleo volcado)", lo que le indicaría su error, pero en Ubuntu, los archivos del núcleo se canalizan a Apport (el sistema de informes de fallas de Ubuntu) a través de /proc/sys/kernel/core_pattern
, y esto parece causar el mensaje engañoso.
Si Apport descubre que el programa en cuestión no es uno, debería informar fallas (lo que puede ver que sucede en /var/log/apport.log
), vuelve a simular el comportamiento predeterminado del kernel de colocar un archivo central en el cwd (esto se hace en el script /usr/share/apport/apport
). Esto incluye respetar ulimit, en cuyo caso no hace nada. Pero (supongo) en lo que se refiere al núcleo, se generó un archivo central (y se canalizó para que lo aporte), de ahí el mensaje "Error de segmentación (núcleo descargado)".
En última instancia, PEBKAC por olvidarse de configurar ulimit, pero el mensaje engañoso me hizo pensar que me estaba volviendo loco por un tiempo, preguntándome qué estaba consumiendo mis archivos principales.
(También, en general, la página del manual core(5) -- man 5 core
-- es una buena referencia para saber dónde termina su archivo principal y las razones por las que podría no escribirse).