RFR (XS) 8141422: G1 eager reclaim card dirtying may dirty outside of allocated objects
thomas.schatzl at oracle.com
Wed Nov 4 13:35:26 UTC 2015
On Wed, 2015-11-04 at 14:20 +0100, Mikael Gerdin wrote:
> Hi all,
> We've discovered a small issue with the card dirtying used to support
> eager reclaim of humongous objects.
> The problem is that when remembered set iteration yields a card which
> does not correspond to the allocated part of a region then that cards
> should be ignored. Currently the code only detects this situation when
Just fyi, the remembered set may contain such stale entries. A normal
Java application would not dirty such a card.
When we talked about it, the problem has been dirty card verification I
think. I am not sure if there is some serious issue with that - walking
that card later should always filter it out imo.
> the ignored card covers an otherwise free region but this check needs to
> be extended to also check if the card corresponds to unallocated memory
> in an otherwise used region.
> An example of this situation is that the card corresponds to a part of
> memory above _top in a humongous region and this is what we are seeing
> in some test cases.
> My suggested fix is to check "is_in_closed_subset" which will look up
> the corresponding region and verify that the address is within the
> allocated bounds of that region.
> Bug: https://bugs.openjdk.java.net/browse/JDK-8141422
> Webrev: http://cr.openjdk.java.net/~mgerdin/8141422/webrev.0/
> Testing: JPRT
looks good to me.
(Note that I fixed the typo in the bug summary)
More information about the hotspot-gc-dev