当执行通过JNI从java代码调用的共享库函数时,我的JRE崩溃了。输出显示JRE崩溃,因为它“无法编写核心转储。核心转储已被禁用。”
经过几天没有解释的谷歌搜索,我的问题是:
我知道输出建议执行“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
#
答案 0 :(得分:0)
我知道这是一个老问题了……
此消息“无法写入核心转储。核心转储已被禁用。”并不意味着这是崩溃的原因。 “失败”一词的确在这里引起误解。
此消息仅表示core dumps在Java VM中被禁用(通常是这种情况),因此在崩溃时不会生成此类转储。