Não há core dumps após atualizações recentes do systemd?

12

Quando executo um programa em que trabalho, ele falha com a seguinte mensagem:

...
Aborted (core dumped)

No entanto, nenhum dump principal é criado. Os core dumps foram escritos anteriormente, e não me lembro que mudei algo relacionado a ele.

Quando corro ulimit -a, volto,

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

Outros pontos

  • Eu verifiquei que meu usuário pode criar arquivos no diretório atual.
  • Eu li sobre /proc/sys/fs/suid_dumpable. Atualmente, está definido como 0 na minha máquina. Tentei alterá-lo para 1 ou 2, mas não houve diferença.
  • Também tentei executar o programa como root, mas isso também não fez diferença.

Infelizmente, não me lembro quando consegui produzir o último core-dump bem-sucedido.

Philipp Claßen
fonte

Respostas:

8

A partir dos documentos coredump.conf,

Para desativar um arquivo de configuração fornecido pelo fornecedor, a maneira recomendada é colocar um link simbólico /dev/nullno diretório de configuração /etc/, com o mesmo nome de arquivo que o arquivo de configuração do fornecedor.

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

Desde systemd, as coisas são gerenciadas de maneira diferente.

Schaiba
fonte
Uau, você está certo! Há pouco tempo, mudei para o systemd. sudo systemd-coredumpctlmostra todos os dumps do núcleo ausentes. Sua solução funcionou, mas somente após a reinicialização do sistema.
Philipp Claßen
1
systemdé systemd-sysctl.serviceexecutado apenas sysctlno ponto de inicialização adequado e lida com a execução manual das alterações. E não crie / substitua arquivos de configuração sem investigar para que servem e seu conteúdo.
21813 vonbrand
1
O arquivo parece ter sido renomeado para 50-coredump.conf, para aplicar as configurações na inicialização atual, tive que executar alterar manualmente a configuração do sysctl, consulte stackoverflow.com/q/2065912/427545 .
Lekensteyn
2
Para restaurar o padrão, não defina uma sequência vazia, use-a em vez disso:sysctl -w kernel.core_pattern="core"
Lekensteyn
2

Você pode usar o coredumpctlcomando para recuperar seu dump principal ou executar o gdb nele. Esse é o método 'aprovado pelo sistema' de lidar com eles. : - /

Em certo sentido, é meio bom que o systemd esteja capturando todas essas coisas porque as apagará automaticamente depois de um tempo e também facilita o upload de despejos de memória para relatórios de erros.

Mas, foi uma mudança chocante, com pouco em termos de notificação ou dicas para pessoas que sabiam como os coredumps funcionavam antes do sistema se envolver. Mesmo soltar um arquivo chamado 'core.pid.txt' com instruções para usar o coredumpctl para obter o seu coredump, bem como desativar a criação dos .txtarquivos, seria uma grande ajuda, mesmo que eles também tenham sistema de arquivos por algum tempo.

Omniforme
fonte