Como obter um despejo de núcleo do apache?

8

Estou tendo problemas com o meu Ubuntu 14.10 Server. Ao executar determinadas ações, meu apache2 é reiniciado com um erro de falha de segmentação. Para depurar esse problema, eu gostaria de criar um dump principal. Eu fiz o seguinte:

  • adicionado CoreDumpDirectory /tmp/apache-coredumpsao arquivo de configuração
  • Corre ulimit -c unlimited
  • Corre apt-get install apache2-dbg php5-dbg
  • reiniciado apachee causou o erro. O log afirma que pode haver um dump principal no diretório, mas está vazio.

Também tentei usar o gdb diretamente no executável do apache2, mas o apache não será iniciado a menos que seja iniciado apachectlou service apache2 start.

Como posso obter um dump principal para depurar meu problema OU como posso anexar gdbdiretamente ao apache?

Andreas Hartmann
fonte
Para o primeiro, veja aqui: serverfault.com/questions/470407/… para o último, aqui: httpd.apache.org/dev/debugging.html#gdb
Elder Geek
Infelizmente, isso não funcionou. Tentei definir as permissões conforme sugerido no primeiro link, mas ainda assim nenhum núcleo é despejado. Eu já conhecia o segundo link. Realmente não responde minha pergunta de uma maneira específica do ubuntu (o Ubuntu não possui um executável httpd, e chamar o apache2 diretamente não funciona pelos motivos mencionados anteriormente).
Andreas Hartmann
O coredump está em / tmp, talvez?
Elder Geek
Especifiquei o dump principal para ser colocado em uma pasta diferente, portanto não está em / tmp.
22615 Andreas Hartmann
Não quero usar o apport, quero examinar meu problema localmente e não reportar um erro, porque provavelmente não é um bug do apache.
22615 Andreas Hartmann

Respostas:

4

ulimit -c unlimited afeta apenas seu shell atual.

Você pode confirmar isso observando a saída cat /proc/$(pidof -s apache2).

Eu adicionei ulimit -c unlimiteda /etc/default/apache2e agora cat /proc/$(pidof -s apache2)/limitsinclui

Max core file size        unlimited            unlimited            bytes
Jay _silly_evarlast_ Wren
fonte
Eu tentei isso, mas ele ainda não conseguiu o Apache (12 LTS) para despejar o núcleo. Alguma ideia?
Josip Rodin
Encontrou a resposta - o apport foi ativado /etc/default/apporte mudou o padrão de despejo do núcleo do kernel para se adequar. Veja serverfault.com/questions/470407/…
Josip Rodin
echo '/tmp/apache-coredumps/core-%e.%p'> / proc / sys / kernel / core_pattern
Rudger