我们正在开发一个在tomcat上运行的java应用程序。此方案不可重现,但对于客户而言,应用程序崩溃并导致jvm崩溃
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000077a60895, pid=3644, tid=3792
#
# JRE version: 6.0_30-b20
# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.5-b03 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [ntdll.dll+0x50895]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
v blob 0x0000000003d6707f
j java.lang.String.equals(Ljava/lang/Object;)Z+8
j javax.management.MBeanAttributeInfo.<clinit>()V+25
v ~StubRoutines::call_stub
j com.sun.jmx.mbeanserver.MBeanServerDelegateImpl.<clinit>()V+51
v ~StubRoutines::call_stub
j com.sun.jmx.mbeanserver.JmxMBeanServer.newMBeanServerDelegate()Ljavax/management/MBeanServerDelegate;+0
j javax.management.MBeanServerBuilder.newMBeanServerDelegate()Ljavax/management/MBeanServerDelegate;+0
j javax.management.MBeanServerFactory.newMBeanServer(Ljava/lang/String;)Ljavax/management/MBeanServer;+14
j javax.management.MBeanServerFactory.createMBeanServer(Ljava/lang/String;)Ljavax/management/MBeanServer;+6
j javax.management.MBeanServerFactory.createMBeanServer()Ljavax/management/MBeanServer;+1
j org.apache.catalina.startup.Bootstrap.createClassLoader(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/ClassLoader;+549
j org.apache.catalina.startup.Bootstrap.initClassLoaders()V+5
j org.apache.catalina.startup.Bootstrap.init()V+9
j org.apache.catalina.startup.Bootstrap.main([Ljava/lang/String;)V+52
v ~StubRoutines::call_stub
j sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0
j sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+87
j sun.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6
j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+161
j net.propero.workspace.windowsinfrastructure.tomcatservice.TomcatService.run()V+153
j java.lang.Thread.run()V+11
v ~StubRoutines::call_stub
从堆栈跟踪中可以看出,这是tomcat中导致失败的代码,而不是我们的应用程序特定代码。我检查了谷歌,但找不到匹配此堆栈跟踪的已知错误。关于如何解决这个问题的任何想法?
答案 0 :(得分:1)
当在null检查之前执行String.equals内部执行时,它看起来是一个众所周知的问题:
只有一种解决方法:您必须将JRE升级到最新的可用Java 1.6