2

私たちの Web アプリケーションでは、JVM のクラッシュが定期的に発生しています。ただし、これまでのところ、問題の正確な原因が何であるかはわかりません。

すべてのクラッシュは同じ「問題のあるフレーム」を持っているように見えます。問題のあるフレームは Hibernate コード内にありますが、JNI コードの痕跡はないようです。

-Xint フラグをアクティブにして (JIT を無効にして) 同じコードを実行すると、問題は発生しなくなります。

Hibernate のバージョンは 3.6.7 です。

この問題の原因をさらに詳しく調べることができる提案はありますか?

ありがとう!

JVM レポート:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000022b5be6, pid=2960, tid=1736
#
# JRE version: 6.0_21-b07
# Java VM: Java HotSpot(TM) 64-Bit Server VM (17.0-b17 mixed mode windows-amd64 )
# Problematic frame:
# J  org.hibernate.type.descriptor.java.MutableMutabilityPlan.deepCopy(Ljava/lang/Object;)Ljava/lang/Object;
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

---------------  T H R E A D  ---------------

Current thread (0x0000000008d35000):  JavaThread "http-8002-6" daemon [_thread_in_Java, id=1736, stack(0x000000000a980000,0x000000000a9c0000)]

siginfo: ExceptionCode=0xc0000005, reading address 0xffffffffffffffff

Registers:
EAX=0x00000001038a6ca8, EBX=0x00000001038de1e0, ECX=0x0000000000000018, EDX=0x3e64492f3c202020
ESP=0x000000000a9bb0f0, EBP=0x000000008e4e0678, ESI=0x00000000b2f9dc30, EDI=0x0000000001d0dd10
EIP=0x00000000022b5be6, EFLAGS=0x0000000000010246

Top of Stack: (sp=0x000000000a9bb0f0)
0x000000000a9bb0f0:   0000000000f55e63 00000000b0dd1830
0x000000000a9bb100:   00000000b353bbf8 000000000a9bb108
0x000000000a9bb110:   00000001000167f5 000000008e4e1220
0x000000000a9bb120:   00000001040b8278 0000000000000000
0x000000000a9bb130:   0000000001d0dd10 00000000b0540968
0x000000000a9bb140:   000000000a9bb180 00000000b2f9dd00
0x000000000a9bb150:   000000008e4e0678 0000000001c6db68
0x000000000a9bb160:   00000000b053ec30 00000000b0dd1830
0x000000000a9bb170:   00000000b2f9dd00 0000000001d882f0
0x000000000a9bb180:   000000110000000f 00000000b2f9dc30
0x000000000a9bb190:   000000008e481a20 000000008e2b5180
0x000000000a9bb1a0:   000000008e481a20 000000008e2b5180
0x000000000a9bb1b0:   000000008e4e1220 0000000000000078
0x000000000a9bb1c0:   000000000a9bb1f0 0000000107623440
0x000000000a9bb1d0:   0000000001d97634 000000008e4e1160
0x000000000a9bb1e0:   0000000107623440 0000000001d97678 

Instructions: (pc=0x00000000022b5be6)
0x00000000022b5bd6:   62 8e 03 01 00 00 00 4d 3b d3 0f 85 b7 01 00 00
0x00000000022b5be6:   4c 8b 52 38 49 bb 38 01 30 00 01 00 00 00 4d 3b 


Stack: [0x000000000a980000,0x000000000a9c0000],  sp=0x000000000a9bb0f0,  free space=ec0000000000000000k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
J  org.hibernate.type.descriptor.java.MutableMutabilityPlan.deepCopy(Ljava/lang/Object;)Ljava/lang/Object;
4

2 に答える 2

1

原因に関係なく、これは JVM では発生しません。最も簡単な解決策は、JVMを最新のマイナー ポイント リリースにアップグレードすることです。

Java 6 は現在サポートが終了しているため、Java 7 VM で実行する必要があることに注意してください。ただし、これはより大きなアップグレードであり、おそらくそれをテストする時間をスケジュールする必要があります. ただし、Java 6 のポイント アップグレードは些細なことだと思います。

于 2013-09-16T08:54:15.340 に答える
0

「mov r10,QWORD PTR [rdx+0x38]」を実行しようとします。

メモリ マップ (提供していない) がないと、0x3e64492f3c202020 + 0x38 アドレスにあるものを特定するのは困難です。さらに、 3e64492f3c202020 はテキスト ">dI/< " に似ており、住所には似ていません。

JVM をアップグレードし、RAM もテストすることをお勧めします。

于 2013-09-17T02:36:43.273 に答える