[14] RFR: 8235982: AArch64: gc/stress/jfr/TestStressAllocationGCEventsWithParallel.java assertion failure

Stefan Johansson stefan.johansson at oracle.com
Tue Dec 17 13:53:22 UTC 2019

Hi Nick,

Thanks for fixing this issue.

On 2019-12-17 07:22, Nick Gasson wrote:
> Hi,
> Bug: https://bugs.openjdk.java.net/browse/JDK-8235982
> Webrev: http://cr.openjdk.java.net/~ngasson/8235982/webrev.01/
> The above test has been intermittently failing with an assertion error 
> on AArch64 since the changes in "8220465: Use shadow regions for faster 
> ParallelGC full GCs".
> PSParallelCompact::decrement_destination_counts assumes that 
> shadow_region() is valid if mark_copied() succeeded (i.e. _shadow_state 
> was FilledShadow before). MoveAndUpdateShadowClosure::complete_region 
> sets these with the following code:
>    // Record the shadow region index
>    region_ptr->set_shadow_region(_shadow);
>    // Mark the shadow region as filled to indicate the data is ready to be
>    // copied back
>    region_ptr->mark_filled();
> set_shadow_region() does an ordinary store to a volatile variable and 
> mark_filled() uses a CAS to set _shadow_state to FilledShadow with 
> relaxed memory ordering. On a non-TSO architecture like AArch64 these 
> two stores may be reordered when observed from another thread.
> Fix by making the CAS to set _shadow_state use the default conservative 
> memory order which inserts a full barrier (see the discussion on the JBS 
> entry).
I agree with the conclusions in the JBS entry and this fix looks good,

> Thanks,
> Nick

More information about the hotspot-gc-dev mailing list