JEP 146: Improve Fatal Error Logs

OwnerTom Rodriguez
Created2011/11/09 20:00
Updated2014/07/10 20:21
TypeFeature
StatusCandidate
Componenthotspot
ScopeImplementation
Discussionhostspot dash dev at openjdk dot java dot net
EffortS
DurationS
Priority4
Reviewed byJesper Wilhelmsson
Endorsed byMikael Vidstedt
Issue8046136

Summary

Improve HotSpot's fatal error logs (hs_err files) by including additional historical information and also some context-dependent information.

Motivation

Fatal error logs are a critical tool for triaging bugs. Adding more useful information to them may allow bugs to be evaluated more quickly.

Description

This project has provided a set of classes that are used to store information that is put into the crash dump in the case of a crash.

EventLog is the base event log dumping class that is registered for dumping at crash time. EventLog is a very generic interface that normally shouldn't be used directly, but rather through its subclasses.

The EventLogBase is a template subclass of EventLog that provides basic ring buffer functionality. Most event loggers should subclass this, possibly providing a more featureful log function if the existing copy semantics aren't appropriate. The provided name is used as the label of the log when it is dumped during a crash.

The information that has been added to the crash dump is for instance historical information of recent compilation and GC history. Context-dependent information includes, for example, what bytecode is being processed and what the inline tree looks like when a crash occurs during compilation.

Two new flags was added to control the event log:

-XX:LogEvents={true/false} Enable the various ring buffer event logs. Defaults to true.

-XX:LogEventsBufferEntries=n Set the size of the ring buffer. Defaults to 10.

Testing

Exercising this code will require causing crashes in various contexts, so initially some forced crashing may be required.