Falla de Apache Seg (11)

8

Tengo esto en mi apace error.log:

[Vie 18 sep 08:10:54 2009] [aviso] hijo pid 9178 señal de salida Falla de segmentación (11)
[Vie 18 sep 08:11:41 2009] [aviso] niño pid 9187 señal de salida Falla de segmentación (11)
[Vie 18 de septiembre 08:12:12 2009] [aviso] hijo pid 9204 señal de salida fallo de segmentación (11)
[viernes 18 de septiembre 08:12:13 2009] [aviso] hijo pid 9202 señal de salida fallo de segmentación (11)
[viernes 18 de septiembre 08:14:45 2009] [aviso] hijo pid 9251 señal de salida Fallo de segmentación (11)

Comenzó el mismo día que hice una adición al archivo vhost.conf. Así que volví al archivo original y reinicié apache2ctl. Lamentablemente, todavía está ocurriendo.

Apache parece estar sirviendo páginas OK.

¿Algunas ideas?

Salud,

Nathan

Nathan Friend
fuente

Respuestas:

5

Nathan, intenta detener Apache e iniciarlo en primer plano (depuración, sin subprocesos), que puede filtrar más pistas sobre lo que lo está haciendo predeterminado.

Una vez dicho esto, no debería segfault de todos modos, por lo que es un error, sin embargo, puede ser algo que puede solucionar si sabe lo que lo está causando.

apache2 -X

Además (es poco probable que revele la razón completa de este problema), cualquier advertencia / error de ...

 apache2ctl -t

...?

Finalmente, todos los módulos que ha cargado en Apache están "certificados", tal vez pueda comentar sobre la mitad de ellos y ver si el problema desaparece o no, y continuar con una búsqueda binaria de divide y vencerás desde allí.

También puede buscar volcados de núcleo producidos a partir de la segfault, tal vez en / tmp? Si encuentra alguno, intente ejecutarlo a través de gdb ...

gdb apache2 -c /tmp/core.<pid>
Jerjes
fuente
Principalmente un buen consejo, pero no diría que es un error de Apache a menos que haya descartado cosas como usar el mpm incorrecto o un módulo de terceros con errores. O permisos en archivos si los hilos se ejecutan como un usuario diferente o algo así. Hay muchas cosas que considerar realmente. Pero sí, comience con los registros de depuración. PD: esta es la razón por la cual es bueno tener la configuración de Apache bajo control de versión;)
Lee B
La verificación de sintaxis regresa OK. Realmente no quiero reiniciarlo en modo de depuración durante las horas centrales, lo intentaré esta noche cuando los servidores estén menos ocupados. Gracias por tus sugerencias hasta ahora.
Nathan Friend
Acabo de leer lo que escribí, y estoy de acuerdo con Lee, no me atrevería a decir que es un error de Apache, lo que debería haber dejado en claro es que es casi seguro que el error es propiedad de uno de los módulos apache de terceros cargados, y no Apache en sí. :)
Jerjes
5

Los Sig11 generalmente solo ocurren por una de dos razones:

  • Malos programas

    En el caso de Apache, es estadísticamente improbable que sea un error en el código central de Apache.

    Es mucho más común ser culpa de un módulo. Ya sea en la forma en que un módulo trata con seguridad las excepciones en el código o las bibliotecas que está procesando. O la forma en que interactúa con el modelo MPM elegido por Apache. Cuando un módulo se comporta mal de esta manera, sale incontrolablemente antes de devolver los datos al proceso hijo de Apache y, por lo tanto, produce el defecto de seguridad.

    Revise todos los cambios que ha realizado desde la última vez que funcionó. Como dice Lee B , este es el ejemplo perfecto para usar el control de versiones.

    Para complicar un poco las cosas, a menudo puede producir el mismo comportamiento emitiendo un gracefulreinicio en lugar de un reinicio completo después de realizar cambios en la configuración del módulo de Apache. Puede descartar esto deteniendo e iniciando Apache.

  • Mal hardware

    Si está seguro de que los errores coinciden con su cambio de configuración y no ve ningún otro efecto negativo en el sistema, entonces probablemente pueda descartarlo. Pero puede valer la pena tener en cuenta si te quedas sin otras vías. Las CPU y la RAM son los culpables típicos.

Dan Carley
fuente
También he observado este error en un sistema que se ejecuta con espacio de intercambio libre insuficiente. También hubo otros procesos en el registro del sistema que fallaron y se quejaron por el espacio de intercambio libre insuficiente.
try-catch-finally
3

Finalmente lo solucioné. Un simple reinicio del servidor detuvo las fallas seg.

Gracias por tus respuestas. Estoy seguro de que será útil para diagnosticar problemas futuros.

Nathan

Nathan Friend
fuente
1

Supongo que podría ser un módulo cargado que tiene un problema.

Experimenté el mismo comportamiento con PHP y gettext php extension, estaba bloqueando PHP y, por lo tanto, el hijo de apache atendiendo la solicitud.

drAlberT
fuente
1

Después de pasar horas tratando de descubrir la causa de mi propio error de segmentación, comencé a deshabilitar cosas al azar. En mi caso, la causa del error fue el acelerador de Zend.

Como no necesito esta extensión, la dejo desactivada. Si tiene el mismo problema y necesita esta extensión, puede intentar eliminar la memoria caché del acelerador y reiniciar httpd.


fuente