【问题标题】:JVM crash stacktraceJVM 崩溃堆栈跟踪
【发布时间】: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


【解决方案1】:

当 String.equals 内部函数在 null 检查之前执行时,这似乎是一个众所周知的问题:

只有一种解决方法:您必须将 JRE 升级到最新的可用 Java 1.6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    相关资源
    最近更新 更多