我已經寫了一個多線程程序,並且以這樣的方式實現了線程,以便分叉子進程並通過此子進程加載幾個模塊。fork系統調用導致分段錯誤
在我一次測試過程中,我發現進程(在solaris平臺上運行)中止一次,並且它創建了segementation錯誤。在通過轉儲文件時,我真的很震驚地發現solaris中的fork()系統調用導致了這種分段錯誤。
下面是在叉時的堆棧跟蹤()中止:
([email protected]) stopped in (unknown) at 0xfe524970
0xfe524970: <bad address 0xfe524970>
(/opt/SUNWspro/bin/../WS6U2/bin/sparcv9/dbx) where
[1] 0xfe524970(0xfe524970, 0x0, 0xffffffff, 0x1, 0x0, 0x0), at 0xfe52496f
[2] run_prefork(0xfecc04b8, 0xfecc04d0, 0x242f4, 0xfea5d3c8, 0x0, 0x0), at 0xfec97ce8
[3] _ti_fork1(0x1, 0x1ab18, 0x0, 0x0, 0x0, 0x0), at 0xfea5d3c8
[4] _ti_fork(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xfea5d50c
任何人都可以說明爲什麼在solaris的fork()系統調用導致這種行爲?
你確定SIGSEGV發生在你打印堆棧的線程中,而不是其他的?你提到你的應用是多線程的。 – bobah 2010-06-04 07:08:58
可否請您在這裏顯示一些代碼以獲得清晰的圖片 – Vijay 2010-06-04 07:32:34
不可能從您的信息中判斷。可能是任何事情。請發佈您的源代碼片段,用於創建線程和清理線程。許多事情可能在這些階段出錯。 – Thorsten79 2010-06-04 07:54:25