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

Tom Benson tom.benson at oracle.com
Fri Apr 8 16:09:49 UTC 2016


Hi Mikael,
It looks like there is an indentation problem at lines 214/215.
Dumb question:  The code now extends the range down to the object start, 
if current region continues_humongous.  Do you want to extend to the 
true end region of the object, which might not be the current one?
Tom

On 4/8/2016 11:47 AM, Mikael Gerdin wrote:
> 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