2012-04-24 11 views
15

La seguente configurazione è Xampp 1.7.7 e qui sono le informazioni per qualsiasi cosa in quel pacchetto: - Apache/2.2.21 (Win32) mod_ssl/2.2. 21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1APACHE Blocco: padre: processo figlio terminato con stato 3221225477 - Riavvio

Sto eseguendo il server su SO Windows XP SP3 a 32 bit, 4 GB di RAM, Quad Core.

Il problema che sto avendo nel mio file di log degli errori Apache è:

[Tue Apr 24 15:55:55 2012] [notice] Parent: child process exited with status 3221225477 -- Restarting. 
[Tue Apr 24 15:55:57 2012] [notice] Digest: generating secret for digest authentication ... 
[Tue Apr 24 15:55:57 2012] [notice] Digest: done 
[Tue Apr 24 15:55:59 2012] [notice] Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations 
[Tue Apr 24 15:55:59 2012] [notice] Server built: Sep 10 2011 11:34:11 
[Tue Apr 24 15:55:59 2012] [notice] Parent: Created child process 776 
[Tue Apr 24 15:56:00 2012] [notice] Disabled use of AcceptEx() WinSock2 API 
[Tue Apr 24 15:56:01 2012] [notice] Digest: generating secret for digest authentication ... 
[Tue Apr 24 15:56:01 2012] [notice] Digest: done 
[Tue Apr 24 15:56:02 2012] [notice] Child 776: Child process is running 
[Tue Apr 24 15:56:02 2012] [notice] Child 776: Acquired the start mutex. 
[Tue Apr 24 15:56:02 2012] [notice] Child 776: Starting 350 worker threads. 
[Tue Apr 24 15:56:02 2012] [notice] Child 776: Listening on port 443. 
[Tue Apr 24 15:56:02 2012] [notice] Child 776: Listening on port 80. 

Questo sembra verificarsi sporadicamente per tutto il giorno e ho anche provato ad utilizzare Win32DisableEx, EnableIMAP Off e Off EnableSendfile nel file apache conf . Ho anche provato a copiare il file libmysql.dll nelle cartelle system32 e apache/bin senza alcun risultato.

Se qualcuno conosce altri motivi per cui questo errore per il processo figlio si interrompe e causa l'arresto anomalo di apache, le informazioni sarebbero molto apprezzate. Se sono necessari file di registro aggiuntivi, faccelo sapere.

Tks, Shane.

risposta

19

Il codice di errore 3221225477 è 0xC0000005 in esadecimale, che su Windows è:

#define STATUS_ACCESS_VIOLATION ((NTSTATUS)0xC0000005L) 

violazione di accesso è la versione di Windows' di 'segmentation fault', che semplicemente ha detto significa che il programma ha tentato di accedere a una memoria che non è assegnato Questo può accadere per molte ragioni diverse, ma soprattutto (se non sempre) è un bug nel programma.

Ora, la mia ipotesi per la situazione, è che ci sia un bug in PHP o in una delle estensioni di PHP o in Perl o qualche applicazione Perl. Apache stesso è di solito molto stabile, ma se si utilizza un'estensione insolita, potrebbe essere anche la causa.

Suggerisco di aggiornare tutta la configurazione alle ultime versioni. Se si vuole trovare la fonte del problema di sicuro, eseguire Apache all'interno di un debugger, come Visual Studio o OllyDbg. Quando si verifica l'eccezione (violazione di accesso), l'esecuzione verrà interrotta (anziché riavviare) e verrà visualizzato il modulo in questione.

Consultare anche il registro di accesso, se è presente una richiesta sospetta con lo stesso timestamp dell'errore. Ma può succedere che l'arresto si verifichi prima che la richiesta venga salvata nel file di registro.

Problemi correlati