RFR(XS): 7074579: G1: JVM crash with JDK7 running ATG CRMDemo Fusion App

Frederic Parain frederic.parain at oracle.com
Tue Aug 9 06:30:19 PDT 2011

The fix looks good.


On 08/ 6/11 01:13 AM, John Cuthbertson wrote:
> Hi Everyone,
> Can I have a couple of volunteers look at these changes? The webrev can
> be found at: http://cr.openjdk.java.net/~johnc/7074579/webrev.0/
> The issue was a crash caused by an oop that was naked across a GC. What
> was happening was that the ServiceThread was attempting to send a GC
> notification that came from the end of an evacuation pause. (Note that
> the ServiceThread is a Java thread and the GC notification is sent when
> the threads are restarted after the safepoint.) The construction of the
> first of the object arrays (used to pass before and memory pool
> information) triggered a full GC which moved the memory usage class.
> Thus when the attempt to allocate the second object array was made, the
> variable holding the klass oop was now stale causing the crash. Although
> this issue was found when the app was run with G1, the issue is not G1
> specific.
> The solution was to allocate a handle to hold the klass oop and use the
> de-referenced handle in the allocations.
> Verified by inserting a full GC after the first array allocation and
> running the GC notification regression test. Fix was tested by running
> the regression test with all collectors and monitoring a KitchenSink run
> with jconsole.
> Thanks,
> JohnC

Frederic Parain - Oracle
Grenoble Engineering Center - France
Phone: +33 4 76 18 81 17
Email: Frederic.Parain at Oracle.com

More information about the hotspot-gc-dev mailing list