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 回答