2013-05-07 26 views
0

我的程序不時崩潰並轉儲核心。但是,當我試圖從核心文件堆棧我得到以下結果:Solaris上的空核心文件

mdb: core file data for mapping at 100000000 not saved: Interrupted system call 
mdb: core file data for mapping at 100250000 not saved: Interrupted system call 
mdb: core file data for mapping at 10035a000 not saved: Interrupted system call 
mdb: core file data for mapping at 100360000 not saved: Interrupted system call 
mdb: core file data for mapping at 100440000 not saved: Interrupted system call 
mdb: core file data for mapping at 100446000 not saved: Interrupted system call 
mdb: core file data for mapping at 100450000 not saved: Interrupted system call 
mdb: core file data for mapping at 100800000 not saved: Interrupted system call 

我認爲有一些問題,MDB,但其他應用程序正確保存核心文件,有什麼可以成爲這個問題的原因?

提前致謝。

+0

什麼是你的'ulimit -c' – 2013-05-07 13:26:57

+0

它是 - 無限的 – 2013-05-07 15:41:40

回答

2

mdb忠實地報告說,什麼是錯與核心。當映射失敗傾倒的Solaris設定指示失敗的標誌(PF_SUNW_FAILURE),並將errno代替 - 這是「系統調用被中斷」你看到的錯誤號說明爲什麼每個映射失敗傾倒。

最常見的方式到達這裏是有信號的過程,而核心是被棄置,中止轉儲。我不認爲Oracle Solaris提供了一種明確的方式來確定發生了什麼,或者其他線索爲什麼映射無法轉儲。如果你的進程很大,並且/或者在任何類型的系統下運行,以便自動重啓或監視它(我想,但我不確定,即使SMF也會殺死一個花費足夠長時間轉儲的進程,導致轉儲中止,例如),我懷疑這是在傾銷核心時發出信號,而不是其他事情發生錯誤。

如果您確定你被髮送信號,同時傾銷的核心,有事情發生,導致其上的核心被傾倒失敗EINTR文件系統寫入,它可能並不容易以確定什麼。