JDK-8007779 : os::die() on solaris should generate core file
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: hs24,hs25
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris
  • Submitted: 2013-02-08
  • Updated: 2014-01-23
  • Resolved: 2013-02-18
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 JDK 8 Other
6u75Fixed 7u40Fixed 8Fixed hs24Fixed
When hotspot crashes during the writing of the hs_err file, we call os::die(). On linux and bsd this causes a core file to be written (by calling ::abort()). This is good since we then have some record of what went wrong. On solaris, we call _exit() and no core file is created. 

There are two cases during the hs_err writing where we call os::die(). First, if the writing hangs, the WatcherThread will call os::die(). Second, if we get too many errors during the writing we will call os::die(). In both these cases it would be very helpful to have a core file. Otherwise all you have to go on is something like this:

# A fatal error has been detected by the Java Runtime Environment: 
# SIGSEGV (0xb) at pc=0xffffffff653848c0, pid=11823, tid=240 
# JRE version: Java(TM) SE Runtime Environment (7.0_12-b11) 
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.0-b24 mixed mode solaris-sparc compressed oops) 
# Problematic frame: 
# C [libc.so.1+0x848c0]# [ timer expired, abort... ]
The case when second crash occurs while writing the hs_err file is unlikely reproducible without modifying the crash handler code.