No Ubuntu recente (12.04 no meu caso), é possível que "Falha de segmentação (core despejado)" seja impressa, mas nenhum arquivo principal foi produzido onde você poderia esperar um (por exemplo, para um programa compilado localmente).
Isso pode acontecer se você tiver um ulimit de tamanho de arquivo principal igual a 0 (ainda não o fez ulimit -c unlimited
) - esse é o padrão no Ubuntu. Normalmente, isso suprimiria o "(núcleo despejado)", enganando você, mas no Ubuntu, os corefiles são canalizados para o Apport (sistema de relatório de falhas do Ubuntu) via /proc/sys/kernel/core_pattern
, e isso parece causar a mensagem enganosa.
Se o Apport descobrir que o programa em questão não é um para o qual deveria estar relatando falhas (o que você pode ver acontecendo /var/log/apport.log
), ele volta a simular o comportamento padrão do kernel de colocar um arquivo principal no cwd (isso é feito no script /usr/share/apport/apport
) Isso inclui honrar o ulimit, caso em que não faz nada. Mas (eu assumo) no que diz respeito ao kernel, um corefile foi gerado (e canalizado para apport), daí a mensagem "Falha na segmentação (core despejado)".
Por fim, PEBKAC por esquecer de definir ulimit, mas a mensagem enganosa me fez pensar que eu estava ficando louco por um tempo, imaginando o que estava comendo meus arquivos principais.
(Além disso, em geral, a página de manual do núcleo (5) - man 5 core
- é uma boa referência para onde seu arquivo principal termina e os motivos pelos quais ele pode não ser gravado.)