RFR: 8069034: gc/g1/TestEagerReclaimHumongousRegionsClearMarkBits.java nightly failure
Thomas Schatzl
thomas.schatzl at oracle.com
Mon Feb 2 10:15:07 UTC 2015
Hi all,
On Thu, 2015-01-29 at 12:55 +0100, Stefan Johansson wrote:
> Hi,
>
> Please review this fix for:
> https://bugs.openjdk.java.net/browse/JDK-8069034
>
> Webrev:
> http://cr.openjdk.java.net/~sjohanss/8069034/hotspot.00/
>
> Summary:
> While looking for humongous objects to reclaim we unconditionally
> dirtied cards, some of those might belong to freed regions and if so the
> card table verification will fail. The simple fix is to avoid this by
> checking that the card belong to live regions before dirtying. A more
> robust fix would be to have the iterator avoid returning invalid cards,
> but that is a bigger change and I will file an RFE for this.
I would prefer if the comment were more detailed in why this check is
required, e.g. something like "The remembered set might contain
references to already freed region. Filter them out to to avoid failing
assertions." or so.
Also, just in case somebody is interested why this only fails now: there
has always been the possibility of remembered sets containing references
to regions that have been freed. Until JDK-8048179 no code used the
remembered sets to mark the card table - we only spend time to scan
through such regions at this time, which seems day one behavior.
Btw, the RFE number filed by Stefan is
https://bugs.openjdk.java.net/browse/JDK-8071913
There I added a pointer to this change to remove this change as soon as
any more involved change has been implemented.
Looks okay otherwise.
Thanks,
Thomas
More information about the hotspot-gc-dev
mailing list