RFR(S) 8153843: G1CardLiveDataHelper incorrectly sets next_live_bytes on dead humongous regions

Mikael Gerdin mikael.gerdin at oracle.com
Fri Apr 8 15:47:57 UTC 2016


Hi all,

Please review this small change to solve an integration blocker in hs-rt 
which surfaced with the latest integration from main.

The problem is that humongous regions are kept around for longer 
(possibly indefinitely) because the card live data helper 
unconditionally sets the actual size of humongous objects instead of the 
number of live bytes. Having a non-zero live bytes count prevents the 
cleanup pause from freeing the humongous objects.
When the next gc pause then tries to register those objects with eager 
reclaim it looks at the class pointer of the object and if the class of 
the humongous object was unloaded then we crash.

Bug: https://bugs.openjdk.java.net/browse/JDK-8153843
Webrev: http://cr.openjdk.java.net/~mgerdin/8153843/webrev.0/
Testing: Crashing testcase, JPRT job running

Thanks
/Mikael


More information about the hotspot-gc-dev mailing list