1

ときどき、Jenkins (1.461) によって行われたビルドが途中のランダムな場所で停止することがあります。これらのビルドは、主に C++ コード用の Visual Studio 2008 SP1 の devenv.com への手動でスクリプト化された呼び出しです。Visual Studio はエラー メッセージを出力しません。devenv のログの最後のメッセージは、ビルド中のランダム ファイルです。一部のビルド出力に依存するビルド後の Windows バッチ コマンドが原因で、Jenkins ビルドが失敗します。これはめったに発生しません (およそ 15 回のビルドに 1 回)。Jenkins のエラー ログには、ビルドが失敗したときの異常は何も表示されません。驚いたことに、他の場所では失敗したと表示されていても、ビルドは成功したと表示されます。

問題は Jenkins に切り分けられます。開発者のデスクで実行された同じビルド スクリプトが、この方法で失敗したことはありません。

Jenkins ノードは 32 ビット Windows XP マシンです。それらはすべて、使用可能な十分なディスク容量を持っています。Jenkins は、ノードごとに一度に 1 つのジョブのみを実行するように構成されています。イベント ログには、ビルドが停止した時点で明らかな問題 (Visual Studio のクラッシュなど) が発生していないことが示されています。

これをトラブルシューティングするために調べるべきアイデアはありますか?

4

2 に答える 2

0

最終的に、ランダムビルドの失敗をJenkinsノードのログオフイベントと相関させました。これにより、このJVMのバグ/機能(OracleJavaバグID6871190)が発生し、WindowsのログオフイベントによってシグナルハンドラがJVMを終了します。-XrsオプションをJVMに渡すことで、この動作を(おそらく他の欠点とともに)無効にすることができますが、そのオプションは子Javaプロセスに自動的に伝播されません。

Jenkins自体をキックオフするために-Xrsを渡しており、Jenkinsサービス自体はログオフを通じて機能します。現在の仮説は、Jenkinsのビルドプロセスの一部が、-Xrsで呼び出されない別のJava子プロセスによって開始されるというものです。

于 2012-05-14T14:38:46.883 に答える
0

私自身、ジェンキンスでこの問題が発生したことを思い出したことはありませんが、MSVC 2008 ではリンカが定期的にクラッシュします。これはほぼ毎日のように発生します。リンカがクラッシュしている場合は、それが原因である可能性があります (リンカのクラッシュがログに記録されていない可能性がありますか?)。

編集: 32 ビット Win7 で MSVC2008 SP1 を使用します。C++ ソリューションをビルドするときは、MSBuild 3.5 を使用します。

于 2012-05-10T16:43:56.880 に答える