RFR(S) 8153843: G1CardLiveDataHelper incorrectly sets next_live_bytes on dead humongous regions
tom.benson at oracle.com
Fri Apr 8 16:09:49 UTC 2016
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?
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
More information about the hotspot-gc-dev