RFR: 8020962: dump loaded java classes when vm crash

David Holmes david.holmes at oracle.com
Sun Aug 11 22:56:29 PDT 2013

Hi Yumin,

Note that the SA is only present in a full JDK, not a JRE (full or 
compact profile).

I have quite a few concerns with this:

We already do a lot of things that are not valid to be done from a 
signal handling context but this really takes that to an extreme. Doing 
fork-exec from a signal handler seems like a recipe for disaster (Note 
the existing onError facility is typically used for synchronous failures.)

The idea of launching a second VM to try and query a VM that has crashed 
also seems somewhat problematic:
- What mechanism will the SA try to use to query the VM?
- What if the state of the crashed VM stops the SA from being able to 
attach properly (ie both processes hang)?
- What if it the SA also crashes, will it launch a third VM then a 
fourth etc?

Also what is the nature of this dump? How big is it? Where will it go?


On 12/08/2013 9:36 AM, Yumin Qi wrote:
> Hi, all
>    I would like to have your review for
> http://cr.openjdk.java.net/~minqi/8020962/webrev0/
> <http://cr.openjdk.java.net/%7Eminqi/8020962/webrev0/>
> Description: When JVM crashed, we also want to check the application
> class files especially we got core file from customers.  The aftermath
> analysis will benefit from all loaded java classes available. In this
> change, spawn another process running SA to do the job when JVM crashes,
> this way also avoid further messing up with the error report which
> already in
> signal handler.
> Note: The test has done with following two bugs worked around:
>    8022655: ClassDump ignored jarStream setting (This will be fixed and
> integrated by Kevin Walls soon)
>    8011888: sa.js: TypeError: [object JSAdapter] has no such function
> "__has__" (Not know when it will be integrated)
>    That is, without those two fixed, the jars of loaded classes will not
> be successfully dumped.
>    Also, on MacOS it requires security access permission to attach to
> another process, so omit doing so. To get loaded jar file
> s, with core file available (on all platforms), one can (only after this
> change) do
>    $JAVA_HOME/bin/java [-d64] -cp $JAVA_HOME/lib/sa-jdi.jar
> sun.jvm.hotspot.DumpLoadedClasses $JAVA_HOME/bin/java corefile
> Thanks
> Yumin

More information about the hotspot-compiler-dev mailing list