2012-10-18 51 views
5

好吧,有一个相当大的内部系统。我们有一个友善的主持人,他们通常和我们一起工作,如果事情出错,或者至少让我们指向正确的方向,我们就会保持工作。追踪分段错误11到大型PHP代码库

前一段时间,我们不得不复制代码并将其托管在Rackspace托管的客户端外部专用服务器上。考虑一切工作的罚款数月,一下子服务器的不停投掷嘘声像万能和分段错误,例如

[声明]儿童PID 8628退出信号分割故障(11)

即使没有代码被改变,主机已经表示它可能是一个PHP的问题,开发人员(我们)将不得不研究它。我甚至没有看到一个问题,只是在某些时候apache日志旋转(深夜)导致它崩溃。

我让他们启用核心转储,我用他们一堆武器,Fixing Apache Segmentation Faults Caused by PHP,但rackspace似乎已经移动所有的PHP和Apache源代码到上帝知道在哪里,我无法找到任何地方的.gdbinit使用服务器“发现”,和所有我能走出GDB的是

Program terminated with signal 11, Segmentation fault. 
#0 0x00002b8d6fc36c60 in ??() 

...这不可能是,如果它试图帮助较小!

任何想法从哪里开始跟踪我的代码中这个假设的问题?

+1

我们有同样的问题。旋转日志时,Apache会尝试进行平稳重启。它并不总是干净地回来。我已经安装了cronolog,以便Apache不必关闭只是为了旋转日志。这可能是PHP的问题,但它的工作原理直到Apache重新启动...所以... – tubaguy50035

+1

看看这个答案:http://stackoverflow.com/questions/7745578/notice-child-pid-3580- exit-signal-segmentation-fault-11-apache-error-l – Udan

+0

@ tubaguy50035 ... soooo你的衣架空间问题? – Horse

回答

1

您可以先将PID添加到apache日志中,然后查看哪些人死于......您将看到是否至少有相同的请求。

也许你可以看到在崩溃开始之前更新了什么,也许你可以回滚到以前的配置,如果一些模块更新,不能没有它们。

+0

嗯,我注意到他们升级了PHP大约一周,然后才开始注意到问题,我指出了一些问题他们!但他们只是回应说:“导致段错误的PHP升级比事后一周更为迫切。不幸的是没有办法确认,除非你有一个可以复制这个问题的测试用例。 :(叹气 – Horse

1

如果您知道如何使用GDB调试应用程序核心,则here是源代码RPM和RPM。

我也建议你在应用程序核心上运行“字符串”。这不会给你确切的问题,但在许多情况下,它提供了一些有用的东西。

HTH