Java崩溃应用程序 - 如何阅读JVM生成的崩溃文件?

5
我有一个Java应用程序,它突然崩溃了,没有任何异常。但是有时JVM会创建一个崩溃日志文件,名称类似于“hs_err_pid10930.log”。有人能读取它并告诉我出了什么问题吗?我找不到问题出在哪里。这里唯一合理的信息是交换大小为0。这是个问题吗?它怎么发生的?
你可以在这里找到文件:http://chessfriends-release.s3.amazonaws.com/logs/hs_err_pid10930.log?AWSAccessKeyId=AKIAJP5BYGKOCMCDVZHA&Expires=1305128715&Signature=XEZMuJ0xNSM6YTcdwsI04ahhiYk%3D 谢谢。
Libor
1个回答

3
每当出现这样的崩溃,几乎从不是Java程序员的错,因为JVM崩溃了,而它不应该。根据您的日志文件,看起来它在OpenJDK的JVM中的某个地方崩溃了;我不知道具体是什么原因导致的。我建议您尝试使用Oracle官方的JDK而不是OpenJDK。
我不是阅读这些崩溃转储的专家,但这是我用来确定问题原因的部分:
# Problematic frame:
# V  [libjvm.so+0x64d62d]

这是在转储文件顶部。它并不总是libjvm.so;我曾经见过一些带有类似libGL.so的文件。

如果您想要报告错误,此转储文件中包含以下语句:

# If you would like to submit a bug report, please include
# instructions how to reproduce the bug and visit:
#   https://bugs.launchpad.net/ubuntu/+source/openjdk-6/

我不知道你所做的事情会导致崩溃,也许有一个解决方法。但在任何情况下,JVM都不应该崩溃,这是你使用的JVM中的一个bug。
编辑 日志显示您正在运行Ubuntu 9.10,自那以后已经有两个Ubuntu版本发布,所以我怀疑除非您在Ubuntu 10.04或10.10上测试此问题,否则提交错误不会有任何帮助。我不知道您能否升级到较新版本,但您的问题可能已经得到解决。

在hs_err堆栈跟踪中向下查看几行,崩溃来自由org.mortbay.io.nio.ChannelEndPoint.flush(org.mortbay.io.Buffer)org.mortbay.jetty.HttpGenerator.flush()调用的代码。 - matt b

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接