Falha no Apache Seg (11)

8

Eu tenho isso no meu rápido error.log:

[Sex, 18 de setembro, 08:10:54 2009] [aviso] criança, pid 9178, sinal de saída, falha de segmentação (11)
[Fri, setembro 18, 08:10:54 2009] [aviso] criança, pid 9178, sinal de saída, falha de segmentação (11)
[sex 18 de setembro 08:12:12 2009] [aviso] filho pid 9204 sinal de saída Falha na segmentação (11)
[Sex set 18 08:12:13 2009] [aviso] filho pid 9202 sinal de saída Falha na segmentação (11)
[sex Set 18 08:14:45 2009] [aviso] criança pid 9251 sinal de saída Falha na segmentação (11)

Tudo começou no mesmo dia em que fiz uma adição ao arquivo vhost.conf. Então, voltei ao arquivo original e reiniciei o apache2ctl. Infelizmente ainda está ocorrendo.

O Apache parece estar servindo páginas OK.

Alguma ideia?

Felicidades,

Nathan.

Nathan Friend
fonte

Respostas:

5

Nathan, tente interromper o Apache e iniciá-lo no forground (depuração, não-encadeado), que pode vazar mais pistas sobre o que está tornando o segfault.

Dito isto, ele não deve ser segmentado independentemente, portanto, é um bug, no entanto, pode ser algo que você pode corrigir se souber o que está causando isso.

apache2 -X

Além disso (improvável que revele toda a razão desse problema), quaisquer avisos / erros de ...

 apache2ctl -t

...?

Finalmente, todos os módulos que você carregou no Apache são "Certificados", talvez você possa comentar sobre metade deles e ver se o problema desaparece ou não, e continuar com uma pesquisa binária de dividir e conquistar a partir daí.

Você também pode procurar por dumps principais produzidos a partir do segfault, talvez em / tmp? Se você encontrar alguns, tente executá-lo através do gdb ...

gdb apache2 -c /tmp/core.<pid>
Xerxes
fonte
Principalmente bom conselho, mas eu não diria que é um bug do apache, a menos que você descarte coisas como usar o mpm errado ou um módulo de terceiros com erros. Ou permissões nos arquivos se os threads estiverem sendo executados como um usuário diferente ou algo assim. Muitas coisas para analisar realmente. Mas sim, comece com os logs de depuração. ps: é por isso que é bom ter de configuração do apache sob controle de versão;)
Lee B
A verificação de sintaxe volta OK. Eu realmente não quero reiniciá-lo no modo de depuração durante o horário principal, tentarei isso hoje à noite quando os servidores estiverem menos ocupados. Obrigado por suas sugestões até agora.
Nathan Amigo
Acabei de ler o que escrevi - e eu concordo com Lee - eu não diria que é um bug do Apache, o que eu deveria ter deixado claro é que o bug é quase certamente de propriedade de um dos módulos apache de terceiros carregados, e não Próprio Apache. :)
Xerxes
5

Geralmente, os Sig11 ocorrem apenas por um de dois motivos:

  • Programas ruins.

    No caso do Apache, é estatisticamente improvável que seja um bug no código principal do Apache.

    É muito mais comum ser uma falha de um módulo. Da maneira que um módulo lida com segurança com exceções no código ou nas bibliotecas que está processando. Ou a maneira como ele interage com o modelo MPM escolhido pelo Apache. Quando um módulo se comporta dessa maneira, ele sai incontrolavelmente antes de retornar dados ao processo filho do Apache e, assim, produz o segfault.

    Revise todas as alterações que você fez desde que funcionou pela última vez. Como Lee B diz, este é o exemplo perfeito para usar o controle de versão.

    Para complicar um pouco as coisas, geralmente é possível produzir o mesmo comportamento emitindo uma gracefulreinicialização completa, em vez de completa, depois de fazer alterações na configuração do módulo do Apache. Você pode descartar isso parando e iniciando o Apache.

  • Hardware ruim.

    Se você tiver certeza de que os erros coincidem com a sua alteração na configuração e não estiver vendo outros efeitos negativos no sistema, provavelmente poderá excluir isso. Mas pode valer a pena descobrir se você ficar sem outras avenidas. CPUs e RAM são os culpados típicos.

Dan Carley
fonte
Também observei esse erro em um sistema executando com espaço de troca livre insuficiente. Também havia outros processos no log de sistema seg com falha e reclamando de espaço de troca livre insuficiente.
try-catch-finalmente
3

Finalmente consertei isso. Uma simples reinicialização do servidor interrompeu as falhas do seg.

Obrigado por suas respostas. Tenho certeza de que será útil para diagnosticar problemas futuros.

Nathan.

Nathan Friend
fonte
1

Suponho que poderia ser um módulo carregado com um problema.

Eu experimentei o mesmo comportamento com o PHP e a extensão gettext php, estava travando o PHP e, portanto, o filho do apache atendendo à solicitação.

drAlberT
fonte
1

Depois de passar horas tentando descobrir a causa do meu próprio erro de falha de segmentação, comecei a desabilitar as coisas aleatoriamente. No meu caso, a causa do erro foi o acelerador de Zend.

Como não preciso dessa extensão, estou deixando-a desativada. Se você está tendo o mesmo problema e precisa dessa extensão, tente excluir o cache do eaccelerator e reiniciar o httpd.


fonte