每当我检查是否支持GtkLookAndFeel时,我遇到了JRE崩溃的问题。令人惊讶的是,这个错误似乎只出现在Oracle JRE上。
到目前为止,我已经测试了三个JRE的行为:
(我正在使用所有这些的64位版本)
以下是触发此错误的代码:
import javax.swing.LookAndFeel;
public class Test
{
public static void main(String[] args)
{
LookAndFeel currLAF = new com.sun.java.swing.plaf.gtk.GTKLookAndFeel();
currLAF.isSupportedLookAndFeel();
System.out.println("I am exiting main");
}
}
以下是结果输出:
I am exiting main
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f91fe0fdbe0, pid=332, tid=140265730119424
#
# JRE version: Java(TM) SE Runtime Environment (7.0_67-b01) (build 1.7.0_67-b01)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.65-b04 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C 0x00007f91fe0fdbe0
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/ethan/fail/hs_err_pid332.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
#
请注意,程序退出main后才会崩溃。
作为参考,我正在64位debian测试机上开发,我已经验证了其他GTK + apptications的工作。
我应该向Oracle报告这个问题,还是我做错了什么?
答案 0 :(得分:1)
我肯定会向Oracle提交错误报告。我记得许多年前发生过类似的事情。您已经完成了尽职调查并在多个运行时环境中进行了测试,并且已经确定(至少在较高级别)发生错误的位置。我会告诉他们你在这里列出的所有事情,为了安全起见,如果可以的话,在几台不同的机器上运行相同的代码。我知道Java应该以相同的方式运行,它是以这种方式设计的,但无论如何都要这样做,所以你至少可以说你在错误报告中这样做了。
请确保您在此处遵循这些指南以收集正确的信息,崩溃转储,系统信息,运行时信息等:https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/bugreports.html
如果可以的话,抓住核心转储。核心转储对于Oracle人员来说非常有用(对于几乎所需的程度)来调试实际发生的事情。这是Oracle页面的链接,但您可能需要查找计算机的特定信息: https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/bugreports004.html#CHDJJAJE
从以上链接:
在Linux操作系统上,未处理的信号如分段 违规,非法指令等导致核心转储。 默认情况下,核心转储是在当前工作目录中创建的 进程和核心转储文件的名称是core.pid,其中 pid是崩溃的Java进程的进程ID。
ulimit实用程序用于获取或设置系统的限制 当前shell及其后代可用的资源。使用 ulimit -c命令用于检查或设置核心文件大小限制。确保 限制设置为无限制;否则核心文件可能是 截断。
这是Java Oracle错误报告站点的链接:https://bugreport.java.com/