2012-10-18 29 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