Crash dump analysis

Document created by Nikita_nandakumar on Aug 7, 2013Last modified by harvey_melfi on Mar 1, 2016
Version 2Show Document
  • View in full screen mode
How do you investigate the cause of a JVM crash on the Atom?
When a fatal error occurs in the JVM, it generates an error log file (core/crash dump) automatically called hs_err_pidXXXX.log, normally in the ...\Boomi AtomSphere\<LOCAL ATOM NAME>\ directory. This file may also be found in the working directory of the process or in the temporary directory for the operating system. The top of this file contains the cause of the crash. Sometimes it also happens that the JVM will not be able to generate the crash dump.


In reality, JVM does not create the core dump. Rather it is the operating system which generates the core dump. Core dump is a binary file which may be several hundred megabytes or gigabytes in size. The Operating system just logs the exception/error messages and the details of the threads along with the native libraries loaded with that java process.


JVM crash is happening from the following components:


1.JVM Internal code – example GC


The crash occurred during garbage collection indicating a possible garbage collection fault.
The crash occurred after garbage collection indicating a possible memory corruption.


2.JVM JIT generated code, internal JIT code

The failure in the native JIT code during compilation of java byte codes may cause JVM to crash. Valid byte codes might compile into invalid native code – causing the Java program to fail.


3.Application JNI code


Fault in native code if the application has any JNI code or uses any third party packages that use JNI code (for example, JDBC drivers etc)


Generally JVM is crashing under the following scenarios:
  • Segmentation violation : When the instruction of an application accesses a bad/corrupt memory address
  • Native Stack Overflow: Stack pointer runs beyond the limits of the thread stack.
  • Running out of native memory : Out of memory (unable to allocate memory via malloc)