这是我第一次在Java中遇到这种情况。
Java仅执行核心转储,并显示以下错误:
#
# A fatal error has been detected by the Java Runtime Environment:
#
[thread 140213457409792 also had an error]# Internal Error (safepoint.cpp:300), pid=4327
, tid=140213211031296
# guarantee(PageArmed == 0) failed: invariant
#
# JRE version: 6.0_24-b24
# Java VM: OpenJDK 64-Bit Server VM (20.0-b12 mixed mode linux-amd64 compressed oops)
# Derivative: IcedTea6 1.11.4
# Distribution: Ubuntu 12.04 LTS, package 6b24-1.11.4-1ubuntu0.12.04.1
# An error report file with more information is saved as:
# /tmp/hs_err_pid4327.log
#
# 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/
当我试着在Mac OS上运行它时,它的核心转储在同一个地方(JRE必须是不同的)...所以它一定是与代码有关的东西。我不知道如何调试它,这不是一个异常,并且上面指定的日志文件没有给予我太多信息。有什么想法我可以做些什么来找到错误吗?
4条答案
按热度按时间mwngjboj1#
/tmp/hs_err_pid4327.log文件应包含核心发生位置的堆栈跟踪。除非您正在进行JNI调用,否则这可能是Java错误。
qcuzuvrc2#
核心转储告诉您应该做什么...
如果您要提交错误报告,请包含如何重现错误的说明,并访问:https://bugs.launchpad.net/ubuntu/+source/openjdk-6/
x8goxv8g3#
快速浏览使我认为这是已经报告。
这个bug很可能并不在代码中,很可能是环境问题--可能是JVM bug,也可能是一些不寻常的情况,最有可能的是两者都有--这种bug很少在奇怪的情况下出现。
Google搜索消息中的关键元素(例如“safepoint.cpp:100”),查看其他报告,并查找您的共同点或可能适用的解决方案。在本例中,一组报告表明大量的多线程可能导致了该问题。
w6lpcovy4#
检查应用程序目录中是否有hprof文件。或者,您可以使用
jmap -dump:file=<file_name> <pid>
然后使用MAT http://www.eclipse.org/mat/分析转储
您还可以考虑此处引用的其他工具:
Tool for analyzing java core dump