我有这个在我的空间error.log:
[Fri Sep 18 08:10:54 2009] [注意] child pid 9178退出信号分割错误(11)
[2009年9月18日星期五08:11:41] [注意] child pid 9187退出信号分割故障(11)
[Fri Sep 18 08:12:12 2009] [注意] child pid 9204退出信号分割错误(11)
[Fri Sep 18 08:12:13 2009] [注意]儿童pid 9202退出信号分割故障(11)
[2009年9月18日星期五08:14:45] [注意] child pid 9251退出信号分割故障(11)
它开始了我vhost.conf文件的另外一天。 所以我恢复到原来的文件做了apache2ctl重新启动。 不幸的是,它仍然在发生。
Apache似乎正在服务页面确定。
有任何想法吗?
干杯,
内森。
Nathan,尝试停止Apache,并在forground(debugging,非线程)中启动它,这可能会泄漏更多线索,使线路故障发生。
话虽如此,不pipe它是不是segfault,所以这是一个错误,但是,如果你知道是什么原因导致它可能是你可以修复的东西。
apache2 -X
此外(不太可能揭示这个问题的全部原因),任何警告/错误来自…
apache2ctl -t
…?
最后,你已经加载到Apache的所有模块“authentication”,也许你可以评论一半的问题,看看问题是否消失,并从那里进行分而治之的二进制search。
你也可以寻找从segfault生成的任何核心转储,也许在/ tmp? 如果你find一些,尝试通过gdb运行…
gdb apache2 -c /tmp/core.<pid>
Sig11通常只是由于以下两个原因之一而发生的:
不好的节目。
在Apache的情况下,统计上不太可能是核心Apache代码中的错误。
成为模块故障更为常见。 无论是在模块安全地处理它正在处理的代码或库中的exception。 或者与Apacheselect的MPM模型交互的方式。 当一个模块以这种方式行为不当时,在将数据返回到Apachesubprocess之前就会不受控制地退出,从而产生段错误。
查看自上次工作以来所做的所有更改。 就像Lee B说的那样,这是使用版本控制的最好例子。
稍微复杂一点,你可以在修改Apache的模块设置之后,通过发出一个graceful而不是完全重新启动来产生相同的行为。 你可以通过停止和启动Apache来排除这个问题。
坏的硬件。
如果您确定错误与您的configuration更改一致,并且您没有看到系统上的其他任何不良影响,那么您可以排除这一点。 但是,如果你用完其他途径,可能值得一提。 CPU和RAM是典型的罪魁祸首。
终于搞定了。 服务器的简单重启停止了seg故障。
感谢您的回答。 我相信这对于诊断未来的问题是有用的。
内森。
我想这可能是一个模块加载有问题。
我经历了与PHP和gettext PHP扩展相同的行为,这是崩溃的PHP,因此阿帕奇的孩子服务请求。
花了几个小时试图找出我自己的分段故障错误的原因,我开始随机禁用的东西。 在我的情况下,错误的原因是Zend的eaccelerator。
由于我不需要这个扩展,所以我将其禁用。 如果你有同样的问题,需要这个扩展,你可以尝试删除eacceleratorcaching并重新启动httpd。
下次你可以尝试使用strace或truss