2011-01-19 23 views
0

問題很簡單:我的應用程序在32位體系結構上運行完美,但在64位體系結構上運行。我得到segmentation fault。我想這是因爲執行pthread_kill()調用。這是可能的,或者我的猜想是錯的?64位體系結構中的C問題:pthread_kill()

+2

這是你的只是胡亂猜測。如果您將程序移植到另一個處理器架構上,則可能會發生所有類型的事情。在調試器中運行程序並查看段錯誤來自哪裏。 – 2011-01-19 11:05:44

回答

0

什麼操作系統和什麼glibc你使用?

如果您使用的是主流的pthread實現(比如Linux上的最新GNU glibc),我很確定它們沒有損壞。

我認爲你的崩潰可能是由於你的代碼中的一些問題,或者可能是由於32位和64位二進制代碼的混合不正確。

您可以嘗試用盡可能少的代碼行重現您的崩潰並將其粘貼到此處嗎?

+0

我在Debian GNU/Linux 2.6.26-2-686內核版本和2.7 glibc版本。 – Luigi 2011-01-19 11:07:41

0

段錯誤幾乎肯定pthread_kill()的結果,而是一個普通的老錯誤的應用程序(許多錯誤顯示僅在64位編譯,或者只能使用特定的內存佈局,沒有什麼特別的特別的應用在這裏)。

而不是猜測什麼原因威力是,GDBValgrind下運行應用程序。這兩個可能會讓你痛苦地清楚你的bug在哪裏。