RFR: 8138966: Intermittent SEGV running ParallelGC

Dean Long dean.long at oracle.com
Thu Oct 29 20:32:33 UTC 2015


I'll let GC folks review for correctness, but I was just wondering if 
you could use
load_aquire() and release_store() instead of acquire() and release().

dl

On 10/29/2015 11:12 AM, Andrew Haley wrote:
> We have observed intermittent crashes when running with
> -XX:+UseParallelGC on a many-core AArch64 system.  These appear as
> apparently random segfaults.
>
> I've tracked it down to a race between threads when updating the block
> table in ParallelCompactData::calc_new_pointer() :
>
>     if (!region_ptr->blocks_filled()) {
>      PSParallelCompact::fill_blocks(addr_to_region_idx(addr));
>      region_ptr->set_blocks_filled();
>    }
>
> Neither blocks_filled() nor set_blocks_filled() have any memory fences
> so it is possible for a thread to observe a partially-filled block
> table.
>
> http://cr.openjdk.java.net/~aph/8138966/
>
> This is shared code so I'll need someone to push this for me.
>
> Andrew.




More information about the hotspot-gc-dev mailing list