Apache HTTPクライアントライブラリバージョン4.5.1でさまざまなhttp要求を実行するJBoss上で動作するWebアプリケーションがあります。 EXCEPTION_ACCESS_VIOLATIONがランダムに発生し、hs_err_pidXXXX.logとhs_err_pidXXXX.mdmpのダンプを生成するため、さまざまなjvmクラッシュが発生しました。Apache HttpClient RequestAddCookies.processでJVMがクラッシュする
はここで、ログファイルの一部です:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000005a2364d, pid=2032, tid=3168
#
# JRE version: Java(TM) SE Runtime Environment (7.0_51-b13) (build 1.7.0_51-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.51-b03 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# J org.apache.http.client.protocol.RequestAddCookies.process(Lorg/apache/http/HttpRequest;Lorg/apache/http/protocol/HttpContext;)V
#
# Core dump written. Default location: C:\jboss-as-7.1.1\bin\hs_err_pid2032.mdmp
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
#
--------------- T H R E A D ---------------
Current thread (0x0000000011cb3000): JavaThread "foo_QuartzScheduler_Worker-1" [_thread_in_Java, id=3168, stack(0x0000000010c20000,0x0000000010d20000)]
siginfo: ExceptionCode=0xc0000005, reading address 0x00000003803aba48
Registers:
RAX=0x0000000776011fa0, RBX=0x0000000000000004, RCX=0x0000000000000000, RDX=0x0000000000000001
RSP=0x0000000010d1d270, RBP=0x0000000000000000, RSI=0x0000000775f54a38, RDI=0x0000000775f54a34
R8 =0x000000000000000a, R9 =0x0000000000000000, R10=0x0000000000000001, R11=0x0000000070075748
R12=0x0000000000000000, R13=0x0000000000000001, R14=0x00000007dd1e0988, R15=0x0000000011cb3000
RIP=0x0000000005a2364d, EFLAGS=0x0000000000010206
Top of Stack: (sp=0x0000000010d1d270)
0x0000000010d1d270: 01d2418502f38030 0000000776459470
0x0000000010d1d280: 00000007e5d061a8 0000000010d1d300
0x0000000010d1d290: 0000000700000005 00000007e5d060e8
0x0000000010d1d2a0: 00000007e5d067a0 00000005ffffffff
0x0000000010d1d2b0: 00000007e5d066a8 00000007dcde5c88
0x0000000010d1d2c0: 00000007dcde5c88 00000001fcba194b
0x0000000010d1d2d0: 0000000770075748 0000002300000000
0x0000000010d1d2e0: 00000007dd1e07f0 00000007dcde5c88
0x0000000010d1d2f0: 00000007e5d0ca58 00000022fcba0cd9
0x0000000010d1d300: 000000000000003f 00000000ffffffff
0x0000000010d1d310: eebbac9adc1ccc08 00000007e5d062d8
0x0000000010d1d320: 00000007e5d065c8 00000000046d31a4
0x0000000010d1d330: 00000007a2ee3370 ffffffff0310c6fc
0x0000000010d1d340: 0000000000000006 0000000002d7b170
0x0000000010d1d350: 00000007e5d060e8 00000007e5d062d8
0x0000000010d1d360: 00000007dc1cd5a0 0000000700000009
私はOracle documentationからログヘッダフォーマットを学び、私はウェブ上での意味を検索します。
hereから、ログのメッセージ(この場合はorg.apache.http.client.protocol.RequestAddCookies)で指定されたコードをビルドしたコンパイラにバグがあると "J"フレームタイプがクラッシュすることが判明しました。プロセス(Lorg/apache/http/HttpRequest; Lorg/apache/http/protocol/HttpContext;)V)。
私はHTTPクライアントのjarのマニフェストをチェックして、jdk 1.7.0_75でビルドされていることを確認しました。
私の解決方法は、ライブラリのソースコードをダウンロードして、最新のコンパイラ(1.7.0_80など)で再度コンパイルすることです。私の理論が正しければ、JVMはもはやクラッシュするべきではありません。
残念ながらバグは再現できないため、簡単にテストすることはできません。
私の推論が正しいかどうかを知りたいと思います。前もって感謝します。
には、https://www.google.de/?gws_rd=ssl#q=JavaThread+QuartzScheduler_Worker のGoogle検索結果がたくさんあります。その多くは、その問題に関する報告があります。あなたはジュールを更新できますか? –
@Tobias、助けてくれてありがとう。最初に1.7.0_55でアプリを実行しようとしたが、1.7.0_75に移動したが、まだバグが発生していた。あなたが提供した結果の一部を読みましたが、彼らは異なるフレームタイプを持っているようです:VMフレームを意味する "V"フレームタイプを報告しました。コンパイル済みのJavaフレームに関連する「J」型があります。 – Svech87