RFR 8199435 : Unsafe publication of java.util.Properties.map

Doug Lea dl at cs.oswego.edu
Mon Jun 18 20:01:53 UTC 2018


On 06/18/2018 11:22 AM, Martin Buchholz wrote:

>     Or better, lockField.set in resetLock could instead be setRelease.
>     Except it is using reflection, not VarHandles. So it could be preceded
>     with VarHandle.releaseFence(), although it is hard to think of a
>     scenario in which it could matter.
> 
> 
> You mean followed by, not preceded by?
> 
>           try {
>              lockField.set(this, new Object());
> +            java.lang.invoke.VarHandle.releaseFence();
>          } catch (IllegalAccessException e) {
>              throw new Error(e);
>          }
> 

OK. Followed by is a little better in that it orders any field write
before any write of this, not just the array copy before lock field write.

-Doug



More information about the core-libs-dev mailing list