>> 最近 "ERROR: Maven JVM terminated unexpectedly with exit code 134" というエラーでビルドが失敗する現象に悩まされています。
134ならABRTの終了コードなのでたぶんプロセスクラッシュでしょう。元の原因はSEGVとかだと思います。カレントディレクトリにクラッシュレポートとかコアダンプとか出てるんじゃないでしょうか。
Regards,
Takayoshi
ありがとうございます。
~/.hudson/jobs/Twitter4J/workspace/ に hs_err_pid ほにゃららは見つかりませんでしたが助言で
ピンときて syslog を tail しながら現象を再現させたところ以下のようなログがでていました。
--------------
Nov 25 21:59:17 macmini com.apple.ReportCrash.Root[3736]: 2010-11-25 21:59:17.966 ReportCrash[3736:1407] Saved crash report for java[3732] version 1.0 (1.0) to /Library/Logs/DiagnosticReports/java_2010-11-25-215917_localhost.crash
--------------
Mac はカレントディレクトリではなくて /Library/Logs/DiagnosticReports/ にログが吐かれるんですね!
クラッシュレポートを添付します -> java_2010-11-25-215917_localhost.crash
クラッシュしたスタックによると libSystem.B.dylib の中で落ちているようです。
--------------
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libSystem.B.dylib 0x00007fff82e7a3d6 __kill + 10
1 libSystem.B.dylib 0x00007fff82f1a972 abort + 83
2 com.apple.LaunchServices 0x00007fff80a31c9c GetOurLSSessionIDInit() + 298
3 libSystem.B.dylib 0x00007fff82e447fa pthread_once + 95
4 com.apple.LaunchServices 0x00007fff80a31b6a GetOurLSSessionAttributeBits() + 23
5 com.apple.LaunchServices 0x00007fff80a31b3b NormalizeLSSessionID(LSSessionID) + 28
6 com.apple.LaunchServices 0x00007fff80a30c10 _LSApplicationCheckIn + 44
7 com.apple.HIServices 0x00007fff85e473ce _RegisterApplication + 1086
8 com.apple.HIServices 0x00007fff85e4e926 SetApplicationIsDaemon + 90
9 libawt.jnilib 0x00000001150a9884 +[AWTStarter startAWT:] + 902
10 libawt.jnilib 0x000000011506d625 -[CPerformer perform] + 93
11 com.apple.Foundation 0x00007fff811f563b __NSThreadPerformPerform + 219
12 com.apple.CoreFoundation 0x00007fff8734be91 __CFRunLoopDoSources0 + 1361
13 com.apple.CoreFoundation 0x00007fff8734a089 __CFRunLoopRun + 873
14 com.apple.CoreFoundation 0x00007fff8734984f CFRunLoopRunSpecific + 575
15 java 0x0000000100004696 0x100000000 + 18070
16 java 0x0000000100003eee 0x100000000 + 16110
17 java 0x00000001000017b4 0x100000000 + 6068
--------------
スタックに出てくるキーワードでググったところ以下のスレッドが見つかりました。
かなりスタックが似ています。
http://discussions.apple.com/thread.jspa?messageID=10067122
スクリーンシェアリング(Mac内蔵のVNCサーバ)の問題っぽいのでスクリーンシェアリングをoffにしてみろという話になっていますが、スクリーンシェアリングをoffにしても再現しました。
他にも
・-d32 をつけて32bitで起動
・-server をつけて Server VM を選択
・AWTStarter というのの延長上ででているので -Djava.awt.headless=true で起動(普段は -Djava.awt.headless=false)
を試してみましたが再現します。
OSのバージョンが .1 だけ古いので OS アップデートして試してみます。
--
Yusuke Yamamoto
yus...@mac.com
このメールは: [x] ブログ/Twitterへ転載可能 [ ] 私信
Twitter でフォロー : http://twitter.com/yusukey
blogを購読: http://samuraism.jp/
ひとまずこれで様子を見てみたいと思います。ありがとうございました。
--
Yusuke Yamamoto
yus...@mac.com
このメールは: [x] ブログ/Twitterへ転載可能 [ ] 私信
Twitter でフォロー : http://twitter.com/yusukey
blogを購読: http://samuraism.jp/
プロセスが死んだ時にsyslogに記録が残るのはLinuxも同じですか?それともMacだけでしょうか。
#これはぜひ英語に訳して公開しなければ...
2010年11月25日5:19 Yusuke Yamamoto <yus...@mac.com>:
--
Kohsuke Kawaguchi
Mac以外ならhs_err_pid%p.logファイルを探す、で良いのではないでしょうか。もしカレントディレクトリに出力ができないとかそういう場合は-XX:ErrorFile=/path/to/hs_err_pid%p.logとか付与しておけばよいでしょう。
プロセスクラッシュ時にsyslog吐くというのはLinux一般というわけではなく、ディストリビューション次第(クラッシュレポートツール次第)だと思います。Fedora/RHEL/CentOSだとABRTというクラッシュレポートツールがsyslogにログ吐くと思います。
http://fedoraproject.org/wiki/Features/ABRT
F14だと出力はこんな感じです。
> Dec 16 09:07:49 localhost abrt[13048]: saved core dump of pid 13027 (/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/bin/java) to /var/spool/abrt/ccpp-1292458067-13027.new/coredump (189628416 bytes)
Regards,
Takayoshi
http://d.hatena.ne.jp/nekop/
その後ですが、OSやJVMアップデート後もしばらくしたら発生するようになってしまいました。
さらに調べたところ、headlessモードで発生する既知の問題で、Appleも把握しているそうです。
http://www.techienuggets.com/Comments?tx=115123
-Djava.awt.headless=true (またはオプションなし)でひとまず回避することができました。
#これはぜひ英語に訳して公開しなければ...
英語でも書いておきました。
http://samuraism.jp/blog/2010/12/16/hudson_build_fails_with_maven_jvm_terminated_unexpectedly_with_exit_code_134.html
--
山本 裕介
yus...@mac.com
このメールは: [x] ブログ/Twitterへ転載可能 [ ] 私信
Twitter でフォロー : http://twitter.com/yusukey
blogを購読: http://samuraism.jp/