RFR: 8057722 G1: Code root hashtable updated incorrectly when evacuation failed

Mikael Gerdin mikael.gerdin at oracle.com
Mon Sep 8 16:00:09 UTC 2014


Hi all,

When processing evacuation failures the code root hashtable is walked to 
determine which code roots should still be present after the failed 
evacuation.
The condition used to determine if an entry should be removed was accidentally 
inverted. This caused some missing nmethod remembered set entries after 
evacuation failures.

I also noticed a problem where the _length field was not properly updated 
after evacuation failures, I fixed this as well and factored out the code to 
remove a hashtable entry to a separate function.

Buglink: https://bugs.openjdk.java.net/browse/JDK-8057722
Webrev: http://cr.openjdk.java.net/~mgerdin/8057722/webrev.0/

Testing done: Failing test (with and without
"-XX:+G1EvacuationFailureALot 
-XX:+VerifyAfterGC 
-XX:+G1VerifyHeapRegionCodeRoots"
which easily triggers the assert)

/Mikael



More information about the hotspot-gc-dev mailing list