RFR (XS): G1 - Missing memory barrier in start_cset_region_for_worker

Mikael Gerdin mikael.gerdin at oracle.com
Tue Jan 19 14:45:32 UTC 2016


Hi Axel,

On 2016-01-19 15:30, Axel Siebenborn wrote:
> Hi,
> we have seen crashes on ppc due to a missing memory barrier in
> G1CollectedHeap::start_cset_region_for_worker.
> The code checks, if a HeapRegion is valid by comparing the gc_time_stamp
> with a store value in an array and loads the according HeapRegion from
> an other array. However, these entries are written by an other thread.
> The two loads have to be ordered by a memory barrier, to prevent them
> from being re-ordered and accessing a stale value for the HeapRegion.
>
> Bug:
> https://bugs.openjdk.java.net/browse/JDK-8147611
>
> Webrev:
> http://cr.openjdk.java.net/~asiebenborn/8147611_0/webrev/

This makes sense and corresponds to the storestore() at
2568   OrderAccess::storestore();
2569   _worker_cset_start_region_time_stamp[worker_i] = gc_time_stamp;
2570   return result;

Looks good, I can sponsor it.

/Mikael

>
> Could I please have reviews and a sponsor for this fix.
>
> thanks,
> Axel
>




More information about the hotspot-gc-dev mailing list