29

I've been working on a vision project and using some C++ libraries in Java by JNI.

OS: Ubuntu 12.04

In my project, I'm using boost library to generate random number. But sometimes I get an exception as follows:

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

When I searched for this on StackOverflow, I found some issues related to the IDE (Eclipse). The application is independent of the IDE. So, the solution must be independent from the IDE, too. Any ideas?

UrsinusTheStrong
  • 1,239
  • 1
  • 16
  • 33
Omurhan Soysal
  • 329
  • 1
  • 3
  • 9

4 Answers4

34

I was experiencing the same issue.

As, the error itself suggests -

Failed to write core dump. Core dumps have been disabled. To enable core dumping, try ulimit -c unlimited before starting Java again

ulimit gets and sets user limits. For more info on ulimit do -

man ulimit

So, open a terminal and run -

ulimit -c unlimited

This should solve the problem. To check if the change was successful, run -

ulimit -c -l

This should give you an output as follows -

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

If the problem persists refer to this and this from askUbuntu.

Community
  • 1
  • 1
UrsinusTheStrong
  • 1,239
  • 1
  • 16
  • 33
  • Looks obvious, but this answer helped me, as I wasn't sure what the suggested command (ulimit -c unlimited) would cause. Problem solved for me. Thanks. – Pedro Alvares Jun 23 '19 at 21:05
2

A core dump or a crash dump is a memory snapshot of a running process. A core dump can be automatically created by the operating system when a fatal or unhandled error (for example, signal or system exception) occurs.

for more info https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/bugreports004.html

1

For anyone seeing this issue from within Jenkins (as we are): To enable core dumps from jenkins, edit /etc/init.d/jenkins and add "--core" to $DAEMON_ARGS. Setting ulimit directly from the shell script or via /etc/security/limits.conf will not work.

Mike B
  • 1,600
  • 1
  • 12
  • 8
1

In my case, this error occured because I used the wrong Java version for my project. I was supposed to use Java 11, and I used Java 8 instead.