GtkLookAndFeel在Oracle Jre上致命崩溃

时间:2014-08-29 12:51:34

标签: java swing gtk fatal-error look-and-feel

每当我检查是否支持GtkLookAndFeel时,我遇到了JRE崩溃的问题。令人惊讶的是,这个错误似乎只出现在Oracle JRE上。

到目前为止,我已经测试了三个JRE的行为:

(我正在使用所有这些的64位版本)

  • OpenJDK运行时环境(IcedTea 2.5.1)(7u65-2.5.1-4) - >运行正常
  • Java(TM)SE运行时环境(版本1.7.0_67-b01) - >崩溃
  • Java(TM)SE运行时环境(版本1.8.0_20-b26) - >崩溃

以下是触发此错误的代码:

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报告这个问题,还是我做错了什么?

1 个答案:

答案 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/