Apache Seg fault (11)


8

Ho questo nel mio apace error.log:

[Ven 18 set 08:10:54 2009] [avviso] figlio pid 9178 segnale di uscita Errore di segmentazione (11)
[ven 18 settembre 08:11:41 2009] [avviso] bambino pid 9187 segnale di uscita Errore di segmentazione (11)
[Fri 18 set 08:12:12 2009] [avviso] figlio pid 9204 segnale di uscita Errore di segmentazione (11)
[ven 18 settembre 08:12:13 2009] [avviso] bambino pid 9202 segnale di uscita Errore di segmentazione (11)
[venerdì 18 settembre 08:14:45 2009] [avviso] figlio pid 9251 segnale di uscita Errore di segmentazione (11)

È iniziato lo stesso giorno in cui ho fatto un'aggiunta al file vhost.conf. Quindi sono tornato al file originale e ho riavviato apache2ctl. Purtroppo si sta ancora verificando.

Apache sembra pubblicare pagine OK.

Qualche idea?

Saluti,

Nathan.

Risposte:


5

Nathan, prova a fermare Apache e avviarlo in primo piano (debug, non-threaded), che potrebbe perdere più indizi su ciò che lo rende segreto.

Detto questo, non dovrebbe essere segfault a prescindere, quindi è un bug, tuttavia, potrebbe essere qualcosa che puoi risolvere se sai cosa lo sta causando.

apache2 -X

Inoltre (è improbabile che riveli l'intero motivo di questo problema), eventuali avvisi / errori da ...

 apache2ctl -t

...?

Infine, tutti i moduli che hai caricato in Apache sono "certificati", forse puoi commentarne la metà e vedere se il problema scompare o no, e proseguire con una ricerca binaria di divisione e conquista da lì.

Potresti anche cercare eventuali core dump prodotti dal segfault, forse in / tmp? Se ne trovi alcuni, prova a eseguirlo tramite gdb ...

gdb apache2 -c /tmp/core.<pid>

Per lo più un buon consiglio, ma non direi che è un bug di Apache a meno che tu non abbia escluso cose come l'uso di un mpm sbagliato o un modulo di terze parti difettoso. O autorizzazioni sui file se i thread sono in esecuzione come un altro utente o qualcosa del genere. Molte cose da esaminare davvero. Sì, inizia con i log di debug. ps: questo è il motivo per cui è bene avere la configurazione di apache sotto il controllo della versione;)
Lee B

Il controllo della sintassi ritorna OK. Non voglio davvero riavviarlo in modalità debug durante le ore principali, lo proverò stasera quando i server saranno meno occupati. Grazie per i suggerimenti finora.
Nathan Friend,

Ho appena letto quello che ho scritto - e sono d'accordo con Lee - Non vorrei saltare dicendo che è un bug di Apache, quello che avrei dovuto chiarire è che il bug è quasi certamente di proprietà di uno dei moduli apache di terze parti caricati, e non Apache stesso. :)
Serse

5

I sig11 di solito si verificano solo per uno dei due motivi:

  • Programmi sbagliati.

    Nel caso di Apache è statisticamente improbabile che sia un bug nel codice Apache di base.

    È molto più comune essere un errore di un modulo. O nel modo in cui un modulo gestisce in modo sicuro le eccezioni nel codice o nelle librerie che sta elaborando. O il modo in cui interagisce con il modello MPM scelto da Apache. Quando un modulo si comporta in modo errato in questo modo, esce in modo incontrollato prima di restituire i dati al processo figlio di Apache e quindi produce il segfault.

    Controlla tutte le modifiche apportate dall'ultima volta che ha funzionato. Come dice Lee B , questo è l'esempio perfetto per l'utilizzo del controllo versione.

    Per complicare leggermente le cose, puoi spesso produrre lo stesso comportamento emettendo un gracefulriavvio invece di un completo dopo aver apportato modifiche alla configurazione del modulo di Apache. Puoi escluderlo interrompendo e avviando Apache.

  • Hardware difettoso.

    Se sei sicuro che gli errori coincidano con la modifica della configurazione e non stai riscontrando altri effetti negativi sul sistema, probabilmente puoi escluderlo. Ma può valere la pena ricordare se si esauriscono altre strade. CPU e RAM sono i colpevoli tipici.


Ho anche osservato questo errore su un sistema in esecuzione con spazio di scambio libero insufficiente. Vi erano anche altri processi nel registro di sistema che presentavano errori e lamentavano uno spazio di scambio libero insufficiente.
try-catch-finally

3

Finalmente risolto questo problema. Un semplice riavvio del server ha arrestato gli errori seg.

Grazie per le tue risposte Sono sicuro che ci sarà utile per diagnosticare problemi futuri.

Nathan.


1

Suppongo che potrebbe essere un modulo caricato con un problema.

Ho provato lo stesso comportamento con PHP e l'estensione phette gettext, stava bloccando PHP e quindi il figlio dell'apache che stava servendo la richiesta.


1

Dopo aver passato ore a cercare di capire la causa del mio errore di segmentazione, ho iniziato a disabilitare casualmente le cose. Nel mio caso la causa dell'errore era l'acceleratore di Zend.

Dal momento che non ho bisogno di questa estensione, la lascio disabilitata. Se hai lo stesso problema e hai bisogno di questa estensione, puoi provare a cancellare la cache di acceleratore e riavviare httpd.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.