无法写入核心转储,核心转储已被禁用

qv7cva1a  于 2022-09-21  发布在  Eclipse
关注(0)|答案(4)|浏览(462)

我一直在从事一个VISION项目,并通过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<unsigned int, 32ul, 624ul, 397ul, 31ul, 2567483615u, 11ul, 4294967295u, 7ul, 2636928640u, 15ul, 4022730752u, 18ul, 1812433253u>::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。有什么主意吗?

xmq68pz9

xmq68pz91#

我也遇到了同样的问题。

正如错误本身所表明的那样-
无法写入核心转储。核心转储已被禁用。要启用核心转储,请在再次启动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中的thisthis

yebdmbv4

yebdmbv42#

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

有关更多信息,请参见https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/bugreports004.html

qnyhuwrf

qnyhuwrf3#

对于在Jenkins内部看到这个问题的任何人(就像我们一样):要从Jenkins启用核心转储,请编辑/etc/init.d/jenkins并将“--core”添加到$daemon_args。直接从外壳脚本或通过/etc/security/limits.conf设置ulimit将不起作用。

n7taea2i

n7taea2i4#

在我的例子中,出现这个错误是因为我为我的项目使用了错误的Java版本。我应该使用Java 11,但我使用的是Java 8。

相关问题