RFR(XXS): 8017070: G1: assert(_card_counts[card_num] <= G1ConcRSHotCardLimit) failed
John Cuthbertson
john.cuthbertson at oracle.com
Fri Jun 28 19:01:59 UTC 2013
Hi All,
Can I couple of volunteers review this extremely small change? The
webrev can be found at: http://cr.openjdk.java.net/~johnc/8017070/webrev.0/
Summary:
The assert that fired is invalid. A card can be added to more than one
update buffer since reads and writes to the card table are not atomic.
If two threads end up refining the card at the same time then the count
for that card can be incremented twice. If count is just below the hot
threshold, the double increment will trip the assert. Since the card was
enqueued by two different threads we do want the the double increment to
more accurately reflect how hot the card is. I have removed the invalid
assert and use a bounding expression to assign the new count value.
Testing:
Weblogic+medrec on the failing SQE machine (though I couldn't reproduce
the original problem)
Weblogic+medrec on an Intel Haswell machine
GC test suite
jprt.
Thanks,
JohnC
More information about the hotspot-gc-dev
mailing list