RFR (XS) 8141422: G1 eager reclaim card dirtying may dirty outside of allocated objects

Thomas Schatzl thomas.schatzl at oracle.com
Wed Nov 4 13:35:26 UTC 2015

Hi Mikael,

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 mailing list