为什么JRE因核心转储而崩溃?

时间:2014-05-15 09:23:26

标签: java java-native-interface

当执行通过JNI从java代码调用的共享库函数时,我的JRE崩溃了。输出显示JRE崩溃,因为它“无法编写核心转储。核心转储已被禁用。”
经过几天没有解释的谷歌搜索,我的问题是:

  1. 我在哪里可以找到有关JRE核心转储的信息?我想了解问题和解决方案。
  2. 我知道输出建议执行“ulimit -c unlimited”,这个问题提出了解决方案(How to enable program to dump core on linux?

    这里我粘贴了JRE输出:

    #
    # A fatal error has been detected by the Java Runtime Environment:
    #
    #  SIGSEGV (0xb) at pc=0x00007f7e541cec55, pid=20390, tid=140180586714880
    #
    # JRE version: Java(TM) SE Runtime Environment (7.0_55-b13) (build 1.7.0_55-b13)
    # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.55-b03 mixed mode linux-amd64 compressed oops)
    # Problematic frame:
    # C  [libXXX.so+0x1fc55]  NewMask_UnsetAll+0x15
    #
    # 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:
    # /XXX/hs_err_pid20390.log
    #
    # If you would like to submit a bug report, please visit:
    #   http://bugreport.sun.com/bugreport/crash.jsp
    #
    

1 个答案:

答案 0 :(得分:0)

我知道这是一个老问题了……

此消息“无法写入核心转储。核心转储已被禁用。”并不意味着这是崩溃的原因。 “失败”一词的确在这里引起误解。

此消息仅表示core dumps在Java VM中被禁用(通常是这种情况),因此在崩溃时不会生成此类转储。