跟踪分段错误11到大型PHP代码库

时间:2012-10-18 15:47:39

标签: php apache segmentation-fault

好的,有一个相当庞大的内部系统。我们有一个友好的友好主人,他们通常与我们合作,如果出现问题,保持工作正常,或者至少指出我们正确的方向。

不久前,我们不得不拿一份代码并将其托管在Rackspace托管的客户端外部专用服务器上。考虑到一切都运行良好了好几个月,突然间服务器不断抛出混乱和分段错误,例如

  

[notice] child pid 8628退出信号分段错误(11)

即使没有更改代码,主机也说它可能是一个PHP问题而开发者(我们)必须调查它。我甚至没有看到一个问题,只是在apache日志旋转的某些时候(深夜),这导致它倒下。

我让它们启用了核心转储,并且我配备了一堆它们,Fixing Apache Segmentation Faults Caused by PHP,但是机架空间似乎已经将所有的php和apache源dirs移动到上帝知道哪里,我找不到。使用'find'在服务器上的任何地方gdbinit,以及我可以从gdb中获取的所有内容

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

......如果尝试过,那就不那么有用了!

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

2 个答案:

答案 0 :(得分:1)

您可以首先将PID添加到apache日志中,然后查看哪一个死掉了...您将看到它是否至少是相同的请求。

也许你可以看到在崩溃开始之前更新了什么,如果某些模块更新了并且没有它们就无法生存,也许你可以回滚到以前的配置。

答案 1 :(得分:1)

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

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

HTH