APACHE Сбой: родитель: дочерний процесс завершен со статусом 3221225477 - Перезапуск

Моя следующая настройка - Xampp 1.7.7, и вот информация для всего, что в этом пакете: - 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

Я запускаю сервер на 32-битной ОС Windows XP SP3, 4 гигабайта RAM, Quad Core.

В моем файле журнала ошибок 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.

Кажется, что это происходит спорадически в течение дня, и я даже попытался использовать Win32DisableEx, EnableIMAP Off и EnableSendFile Off в файле apache conf. Я также попытался скопировать файл libmysql.dll в папки system32 и apache/bin без возможности.

Если кто-то знает другие причины этой ошибки для дочернего процесса, выходящего и приводящего к сбою апаша, информация была бы весьма признательна. Если необходимы дополнительные файлы журналов, пожалуйста, дайте мне знать.

Tks, Шейн.

Ответы

Ответ 1

Код ошибки 3221225477 равен 0xC0000005 в шестнадцатеричном формате, который в Windows:

#define STATUS_ACCESS_VIOLATION  ((NTSTATUS)0xC0000005L)

Нарушение прав доступа - это версия Windows "ошибка сегментации", которая просто означает, что программа пыталась получить доступ к памяти, которая не выделена. Это может произойти по разным причинам, но главным образом (если не всегда) является ошибкой в ​​программе.

Теперь, я предполагаю, что в вашей ситуации есть либо ошибка в PHP, либо в одном из PHP-расширений или в Perl или в каком-то приложении Perl. Сам Apache обычно очень стабилен, но если вы используете какое-то необычное расширение, это тоже может быть причиной.

Я бы предложил обновить всю вашу конфигурацию до последних версий. Если вы хотите найти источник проблемы, запустите Apache внутри отладчика, например Visual Studio или OllyDbg. Когда произойдет исключение (нарушение прав доступа), оно прекратит выполнение (вместо перезапуска), и вы увидите, в каком модуле он находится.

Также загляните в журнал доступа, если есть подозрительный запрос с той же меткой времени, что и ошибка. Но может случиться так, что авария произойдет до того, как запрос будет сохранен в файле журнала.