Java Platform, Standard Edition Troubleshooting Guide
Contents    Previous    Next

Thread Section Format

This section contains information about the thread that just crashed. If multiple threads crash at the same time, only one thread is printed.

Thread Information

The first part of the thread section shows the thread that provoked the fatal error, as shown in Example A-6.

The thread pointer is the pointer to the Java VM internal thread structure. It is generally of no interest unless you are debugging a live Java VM or core file.

The following list shows possible thread types.

  • JavaThread

  • VMThread

  • CompilerThread

  • GCTaskThread

  • WatcherThread

  • ConcurrentMarkSweepThread

Table A-2 shows the important thread states.

The thread ID in the output is the native thread identifier.

If a Java thread is a daemon thread, then the string daemon is printed before the thread state.

Signal Information

The next information in the error log describes the unexpected signal that caused the VM to terminate. On a Windows system the output appears as shown in Example A-7.

In the above example, the exception code is 0xc0000005 (ACCESS_VIOLATION), and the exception occurred when the thread attempted to read address 0xd8ffecf1.

On Oracle Solaris and Linux operating systems the signal number (si_signo) and signal code (si_code) are used to identify the exception, as follows:

siginfo:si_signo=11, si_errno=0, si_code=1, si_addr=0x00004321

Register Context

The next information in the error log shows the register context at the time of the fatal error. The exact format of this output is processor-dependent. Example A-8 shows output for the Intel (IA32) processor.

The register values might be useful when combined with instructions, as described below.

Machine Instructions

After the register values, Example A-9 the error log that contains the top of stack followed by 32 bytes of instructions (opcodes) near the program counter (PC) when the system crashed. These opcodes can be decoded with a disassembler to produce the instructions around the location of the crash. Note: IA32 and AMD64 instructions are variable in length, and so it is not always possible to reliably decode instructions before the crash PC.

Thread Stack

Where possible, the next output in the error log is the thread stack, as shown in Example A-10. This includes the addresses of the base and the top of the stack, the current stack pointer, and the amount of unused stack available to the thread. This is followed, where possible, by the stack frames, and up to 100 frames are printed. For C/C++ frames the library name may also be printed. Note: In some fatal error conditions the stack may be corrupt, and in such case this detail may not be available.

The log contains two thread stacks.

  • The first thread stack is Native frames, which prints the native thread showing all function calls. However this thread stack does not take into account the Java methods that are inlined by the runtime compiler; if methods are inlined they appear to be part of the parent's stack frame.

    The information in the thread stack for native frames provides important information about the cause of the crash. By analyzing the libraries in the list from the top down, you can generally determine which library might have caused the problem and report it to the appropriate organization responsible for that library.

  • The second thread stack is Java frames, which prints the Java frames including the inlined methods, skipping the native frames. Depending on the crash it might not be possible to print the native thread stack but it might be possible to print the Java frames.

Further Details

If the error occurred in the VM thread or in a compiler thread, then further details may be seen from Example A-11. For example, in the case of the VM thread, the VM operation is printed if the VM thread is executing a VM operation at the time of the fatal error. In the following output example, the compiler thread provoked the fatal error. The task is a compiler task and the HotSpot Client VM is compiling method hs101t004Thread.ackermann.

For the HotSpot Server VM the output for the compiler task is slightly different but will also include the full class name and method.

Contents    Previous    Next

Copyright © 1993, 2017, Oracle and/or its affiliates. All rights reserved.