【发布时间】:2014-11-07 12:17:44
【问题描述】:
我们正在开发一个在 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 的代码,它导致了失败,而不是我们的应用程序特定代码。我检查了谷歌,但找不到与此堆栈跟踪匹配的已知错误。关于如何解决这个问题的任何想法?
【问题讨论】:
-
那不是Tomcat,它来自JVM。您可以尝试将 JRE 升级到最新可用的 Java 1.6 次要版本,即 6u45 oracle.com/technetwork/java/javase/downloads/…
-
您好,感谢您的评论。但我想知道这是否是我们可以与客户沟通的 jre6.0 b20 的已知记录问题。令人惊讶的是,我们一直在我们的应用程序中使用相同的 jre,但无法在内部重现问题。
-
您可以阅读 Oracle 的 Troubleshooting System Crashes 指南,但我怀疑您会找到很多。还有stackoverflow.com/questions/11275814/… 也有类似的崩溃,这可能是由硬盘驱动器错误引起的。不过,在您的情况下,没有明显的
InputStream或类似名称。 -
@user496934:您可以尝试搜索 Oracle 的错误数据库,但仅此而已。如果您与 Oracle 签订了支持合同,您可以与他们交谈。否则迁移到最新的可用次要版本,或者实际上可能迁移到 1.7。你能做的最好的事情。无论如何都不建议使用旧版本的 JVM,因为它们可能存在未修补的漏洞。
-
升级 JVM 并不能保证您的问题会得到解决,但这是您应该尝试的第一件事。
标签: java jvm jvm-hotspot jvm-crash