2012-05-10 25 views
1

有時候,Jenkins(1.461)完成的構建將停止在中間的某處的隨機點。這些構建是針對主要C++代碼的Visual Studio 2008 SP1 devenv.com的手動腳本調用。 Visual Studio不會發出錯誤消息; devenv日誌中的最後一條消息是正在構建的一些隨機文件。 Jenkins構建失敗是因爲依賴於某些構建輸出的構建後Windows批處理命令。這種情況很少發生(約15個版本中有1個)。在構建失敗的時候,Jenkins的錯誤日誌沒有顯示任何不尋常的事情。令人驚訝的是,它表示構建成功,即使它在其他地方顯示失敗。當用戶註銷節點時,Jenkins構建失敗

問題與Jenkins分離。在開發人員辦公桌上運行的相同構建腳本從未以這種方式失敗。

詹金斯節點是32位Windows XP機器。他們都有足夠的可用磁盤空間。 Jenkins被配置爲每個節點一次只運行一項作業。事件日誌顯示在構建停止的時候沒有發生明顯不好的事情(例如,Visual Studio崩潰)。

有沒有人有任何想法的東西來調查解決這個問題?

+0

Jenkins日誌說什麼? (HTTP:// [jenkins_server] /日誌)。 –

回答

0

我們最終將隨機構建失敗與Jenkins節點上的註銷事件相關聯。這導致JVM bug/feature(Oracle Java bug ID 6871190),其中Windows中的註銷事件導致信號處理程序終止JVM。您可以通過將-Xrs選項傳遞給JVM來禁用此行爲(也許還有其他缺點),但該選項不會自動傳播到子級Java進程。

我們正在通過-Xrs來啓動Jenkins本身,而Jenkins服務本身通過註銷來生活。目前的假設是Jenkins構建過程的某些部分是通過另一個未使用-Xrs調用的Java子進程啓動的。

+0

我遇到了與Matlab相同的問題,這是一個Java應用程序,我發現我可以在其'java.opts'文件中設置'-Xrs'。值得檢查你的下游進程是否有一個java.opts文件,因爲它似乎很常見。 – Craig

+0

我在Ubuntu上面臨同樣的問題:「有時,Jenkins(1.461)完成的構建將停止在中間某個地方的一個隨機位置,問題與Jenkins分離,同一個構建腳本在開發人員桌面上運行以這種方式失敗「 –

0

我不記得自己曾經有過jenkins這個問題,但我在MSVC 2008中經常發生鏈接器崩潰。這幾乎每天都會發生。如果這是鏈接器崩潰,那麼這可能是一個解釋(也許鏈接器崩潰不記錄?)

編輯: 我們在32位Win7上使用MSVC2008 SP1。 我們在構建C++解決方案時使用MSBuild 3.5。