RFR: 8244551: Shenandoah: Fix racy update of update_watermark

Roman Kennke rkennke at redhat.com
Thu May 7 11:06:19 UTC 2020

Here comes the good fix.

I changed volatile HeapWord* -> HeapWord* volatile.

I also added an accessor that does unsynchronized/fast access, to be
used at safepoint.

I also moved the implementations to shenandoahHeap.inline.hpp, they are
becoming more and more bulky to carry in .hpp.




> Disregard this webrev, it contains another change, and Zhengyu also
> pointed out that I got volatile HeapWord* wrong: it should be HeapWord*
> volatile of course. I'll post another webrev tomorrow.
> Thanks,
> Roman
>> See bug for discussion:
>> https://bugs.openjdk.java.net/browse/JDK-8244551
>> Fix is to make _update_watermark volatile and access to it ordered
>> correctly with load_acquire() and release_store().
>> http://cr.openjdk.java.net/~rkennke/JDK-8244551/webrev.00/
>> Testing: testcase mentioned in bug on aarch64 several times,
>> hotspot_gc_shenandoah
>> Ok?
>> Roman

More information about the hotspot-gc-dev mailing list