RFR: 8316566: RISC-V: Zero extended narrow oop passed to Atomic::cmpxchg

Robbin Ehn rehn at openjdk.org
Thu Sep 28 05:50:31 UTC 2023


On Tue, 26 Sep 2023 11:31:58 GMT, Robbin Ehn <rehn at openjdk.org> wrote:

> Hi, please consider!
> 
> There is bug in gcc < 12 where __synch_synchronize() in some corner-cases don't enforce the compiler barrier.
> This causes some code to be placed after the __synch_synchronize(), and in this case causing a word to to be not be sign extended as a collateral issue of the bug.
> You can see the 'bad' assembly in JBS, where a branch is moved over the compiler barrier.
> 
> Trying to get information from gcc folks.
> 
> It seems like either adding a extra compiler barrier, or use  __atomic_thread_fence(__ATOMIC_SEQ_CST) fixes it.
> 
> Tested https://bugs.openjdk.org/browse/JDK-8316186 with this fix.
> Manually verified assembly, with this fix we generate the same as gcc 12.

The bug is not known, no new insights. I'm going to report it upstreams.

I'll back port this to 21 and 17, since we don't know if there are other cases when we use FULL_MEM_BARRIER and compiler does this.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/15917#issuecomment-1738511266


More information about the hotspot-runtime-dev mailing list