RFR(XXS): 8017070: G1: assert(_card_counts[card_num] <= G1ConcRSHotCardLimit) failed
Jon Masamitsu
jon.masamitsu at oracle.com
Fri Jun 28 19:17:49 UTC 2013
Looks good.
On 6/28/2013 12:01 PM, John Cuthbertson wrote:
> 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