“[notice] child pid XXXX exit signal Segmentation fault (11)” in apache error.log问题如何解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (190)

我正在使用Apache/PHP/MySQL堆栈。

用作框架CakePHP。

有时我会得到一张空白的白纸。我无法通过Cake调试它,所以我查看了ApacheError.log,下面是我得到的内容:

[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
提问于
用户回答回答于

将gdb附加到其中一个httpd子进程并重新加载或继续工作并等待崩溃,然后查看repo。做这样的事情:

$ 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附加到一个子进程,在本例中为PID 690(列为UID、PID、PPID)

$ 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
用户回答回答于

segementation错误是php中的一个内部错误(或者,不太可能,apache)。通常情况下,分段错误是由较新和较少测试的php模块之一引起的,例如imagemagick或subversion。

尝试禁用所有非必要模块(in php.ini),然后重新启用它们,直到发生错误。你可能也想更新php和apache。

如果这没有帮助,你应该报告一个PHP错误

扫码关注云+社区

领取腾讯云代金券