【问题标题】:Failed to write core dump. Core dumps have been disabled无法写入核心转储。核心转储已被禁用
【发布时间】:2015-05-12 23:50:27
【问题描述】:

我一直在从事一个视觉项目,并使用 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。有什么想法吗?

【问题讨论】:

  • 您尝试ulimit -c unlimited,如错误消息所示?
  • 尝试在 Ubuntu 中启用核心转储 - ubuntuforums.org/showthread.php?t=1494590
  • 我尝试过这样并再次运行应用程序:su - ; ulimit -c 无限; ulimit -a;我再写一次
  • 问题解决了!感谢您的回复:)
  • @OmurhanSoysal 你能写出完整的答案吗?我没能做到。

标签: java c++ eclipse opencv boost


【解决方案1】:

我遇到了同样的问题。

因为,错误本身表明 -

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

ulimit 获取和设置用户限制。有关 ulimit 的更多信息,请执行 -

man ulimit

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

ulimit -c unlimited

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

ulimit -c -l

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

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

如果问题仍然存在,请参考askUbuntu 中的thisthis

【讨论】:

  • 看起来很明显,但这个答案对我有帮助,因为我不确定建议的命令 (ulimit -c unlimited) 会导致什么。问题为我解决了。谢谢。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 2019-11-12
      • 2013-03-23
      • 2021-03-17
      相关资源
      最近更新 更多