JEP 146: Improve Fatal Error Logs
| Author | Tom Rodriguez |
| Organization | Oracle |
| Created | 2011/11/9 |
| Updated | 2012/12/14 |
| Type | Feature |
| State | Candidate |
| Component | vm/-- |
| Scope | Impl |
| RFE | JDK-7141200 |
| Internal-refs | Oracle:A360:696277 |
| Discussion | hotspot dash dev at openjdk dot java dot net |
| Start | 2011/Q4 |
| Effort | S |
| Duration | S |
| Reviewed-by | Jesper Wilhelmsson |
| Endorsed-by | Mikael Vidstedt |
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.

