"[Примечание] дочерний pid XXXX ошибка сегментации выходного сигнала (11) " в ошибке apache.журнал [закрыт]
Я использую стек Apache/PHP/MySQL.
Использование в качестве фреймворка CakePHP.
время от времени я получаю пустую белую страницу. Я не могу отладить его через торт, поэтому я заглядываю в ошибку apache.журнал и вот что я получаю:
[Wed Oct 12 15:27:23 2011] [notice] child pid 3580 exit signal Segmentation fault (11)
[Wed Oct 12 15:27:34 2011] [notice] child pid 3581 exit signal Segmentation fault (11)
[Wed Oct 12 15:30:52 2011] [notice] child pid 3549 exit signal Segmentation fault (11)
[Wed Oct 12 16:04:27 2011] [notice] child pid 3579 exit signal Segmentation fault (11)
zend_mm_heap corrupted
[Wed Oct 12 16:26:24 2011] [notice] child pid 3625 exit signal Segmentation fault (11)
[Wed Oct 12 17:57:24 2011] [notice] child pid 3577 exit signal Segmentation fault (11)
[Wed Oct 12 17:58:54 2011] [notice] child pid 3550 exit signal Segmentation fault (11)
[Wed Oct 12 17:59:52 2011] [notice] child pid 3578 exit signal Segmentation fault (11)
[Wed Oct 12 18:01:38 2011] [notice] child pid 3683 exit signal Segmentation fault (11)
[Wed Oct 12 22:20:53 2011] [notice] child pid 3778 exit signal Segmentation fault (11)
[Wed Oct 12 22:29:51 2011] [notice] child pid 3777 exit signal Segmentation fault (11)
[Wed Oct 12 22:33:42 2011] [notice] child pid 3774 exit signal Segmentation fault (11)
что это за ошибка сегментации, и как я могу это исправить?
обновление:
PHP Version 5.3.4, OSX local development
Server version: Apache/2.2.17 (Unix)
CakePhp: 1.3.10
3 ответов:
прикрепите gdb к одному из дочерних процессов httpd и перезагрузите или продолжите работу и дождитесь сбоя, а затем посмотрите на обратную трассировку. Сделать что-то вроде этого:
$ ps -ef|grep httpd 0 681 1 0 10:38pm ?? 0:00.45 /Applications/MAMP/Library/bin/httpd -k start 501 690 681 0 10:38pm ?? 0:00.02 /Applications/MAMP/Library/bin/httpd -k start...
теперь присоединить GDB в один из дочерних процессов, в этом случае ПИД-690 (столбцы идентификатора, идентификатор процесса, идентификатор, ...)
$ sudo gdb (gdb) attach 690 Attaching to process 690. Reading symbols for shared libraries . done Reading symbols for shared libraries ....................... done 0x9568ce29 in accept$NOCANCEL$UNIX2003 () (gdb) c Continuing.ждать аварии... затем:
(gdb) backtraceили
(gdb) backtrace fullдолжен дать вам некоторое представление о том, что происходит. Если вы подаете сообщение об ошибке вы следует включить обратную трассу.
если сбой трудно воспроизвести, может быть хорошей идеей настроить Apache для использования только одного дочернего процесса для обработки запросов. Конфигурация выглядит примерно так:
StartServers 1 MinSpareServers 1 MaxSpareServers 1
ошибка сегментации-это внутренняя ошибка в php (или, что менее вероятно, apache). Часто ошибка сегментации вызвана одним из новых и менее проверенных php-модулей, таких как imagemagick или subversion.
попробуйте отключить все неиспользуемые модули (в
php.ini), а затем повторно включить их по одному, пока не произойдет ошибка. Вы также можете обновить php и Apache.Если это не поможет, вы должны сообщить об ошибке php.
Comments