无法编写核心转储。 核心转储已被禁用

我一直致力于视觉项目,并使用JNI的Java中的一些C ++库。

操作系统: Ubuntu 12.04

在我的项目中,我使用boost库来生成随机数。 但有时我得到如下例外:

Core dum140002367330048 also had an error] # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f54f72a615a, pid=11979, tid=140002352568064 # # 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 [libCBIR.so+0x3215a] boost::random::mersenne_twister_engine::operator()()+0x3a # # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again 

当我在StackOverflow上搜索这个时,我发现了一些与IDE(Eclipse)相关的问题。 该应用程序独立于IDE。 因此,解决方案也必须独立于IDE。 有任何想法吗?

我遇到了同样的问题。

因为,错误本身暗示 –

无法编写核心转储。 核心转储已被禁用。 要启用核心转储,请在再次启动Java之前尝试ulimit -c unlimited

ulimit获取并设置用户限制。 有关ulimit do的更多信息 –

 man ulimit 

所以,打开一个终端并运行 –

 ulimit -c unlimited 

这应该可以解决问题。 要检查更改是否成功,请运行 –

 ulimit -c -l 

这应该给你一个输出如下 –

 core file size (blocks, -c) unlimited max locked memory (kbytes, -l) 64 

如果问题仍然存在,请参阅askUbuntu中的 this和this 。

核心转储或故障转储是正在运行的进程的内存快照。 当发生致命或未处理的错误(例如,信号或系统exception)时,操作系统可以自动创建核心转储。

更多信息https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/bugreports004.html