Eu tenho um aplicativo em que estou trabalhando e estou tendo problemas para obter um dump principal quando ele é segmentado. Na verdade, estou tendo problemas para obter arquivos reais de despejo principal. Um caso de teste simples gerará um arquivo de dump principal, mas seu tamanho é zero.
Eu tenho ulimit -c unlimited
definido. Este é o Ubuntu Maverick de 64 bits. Qualquer dica sobre o que fazer a seguir?
[dlee@dlee-oak t]$ ulimit -c
unlimited
[dlee@dlee-oak t]$ cat mkcore.cpp
int main() { *((int *)0) = 0; }
[dlee@dlee-oak t]$ g++ -g mkcore.cpp -o mkcore
[dlee@dlee-oak t]$ ./mkcore
Segmentation fault
[dlee@dlee-oak t]$ ls -l core*
-rw-r--r-- 1 dlee dlee 0 2010-12-21 15:00 core.2993
Editar: Mais informações
[dlee@dlee-oak t]$ tail -n +1 /proc/sys/kernel/core_*
==> /proc/sys/kernel/core_pattern <==
core
==> /proc/sys/kernel/core_pipe_limit <==
0
==> /proc/sys/kernel/core_uses_pid <==
1
[dlee@dlee-oak t]$ tail /var/log/kern.log
<snip/>
Dec 21 16:07:40 dlee-oak kernel: [ 133.863045] mkcore[1589]: segfault at 0 ip 000000000040043d sp 00007fffbd025510 error 6 in mkcore[400000+aa000]
Acabei de perceber que o sistema de arquivos no qual o arquivo principal está sendo gerado é um Parallels Shared Folder . (Esta instância do Ubuntu está sendo executada em uma VM Parallels no meu Mac). Quando executo o aplicativo de um diretório que está no disco local, o arquivo principal é gerado conforme o esperado.
Então, vou mudar um pouco a questão: por que ele não está gerando o arquivo principal no sistema de arquivos prl_fs? Apenas curioso ...
Editar # 2:
Você notará que quando gerar o arquivo principal de tamanho zero, ele não imprimirá (core dumped)
. Eu verifiquei minha sanidade e sim, o arquivo principal de tamanho zero está realmente sendo criado.
[dlee@dlee-oak t]$ X=$(pwd)
[dlee@dlee-oak t]$ ls -l core*
ls: cannot access core*: No such file or directory
[dlee@dlee-oak t]$ ./mkcore
Segmentation fault
[dlee@dlee-oak t]$ ls -l core*
-rw-r--r-- 1 dlee dlee 0 2010-12-22 00:41 core.6009
[dlee@dlee-oak t]$ cd ~
[dlee@dlee-oak ~]$ $X/mkcore
Segmentation fault (core dumped)