[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-2d-dev
Subject:    Re: [OpenJDK 2D-Dev] RFR: JDK-8263467: Incorrect double-checked locking in sun.java2d.CRenderer [v2]
From:       Aleksey Shipilev <shade () openjdk ! java ! net>
Date:       2021-04-21 12:36:34
Message-ID: 8YAIVTrN582qmS7bGwnD8s4ReTgfx73iyv557rhABZo=.c4506b08-7b7e-48a7-9faa-b3a0d1bd2b80 () github ! com
[Download RAW message or body]

On Fri, 12 Mar 2021 07:22:26 GMT, Aleksey Shipilev <shade@openjdk.org> wrote:

> > SonarCloud reports multiple incorrect double-checked locking cases in \
> > `sun.java2d.CRenderer`. For example: 
> > 
> > Arc2D arcToShape;
> > 
> > ...
> > if (arcToShape == null) {
> > synchronized (this) {
> > if (arcToShape == null) {
> > arcToShape = new Arc2D.Float();
> > }
> > }
> > }
> > 
> > 
> > `Arc2D` contains fields that are not `final`. `arcToShape` is not `volatile`. \
> > This makes it an incorrect DCL. This code is used by Mac OS, do it would probably \
> > blow up some time later on M1. 
> > This is the candidate fix that preserves the semantics. I am doing this fix \
> > blindly so far, without testing on real Mac OS. But maybe there is no need to do \
> > any of this, because the setter methods overwrite the contents of all these \
> > objects under their own sync. So, maybe we can just allocate those objects \
> > without DCL-backed caching and pass them in?
> 
> Aleksey Shipilev has updated the pull request incrementally with one additional \
> commit since the last revision: 
> Drop DCL and useless synchronization completely

Not now, bot.

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

PR: https://git.openjdk.java.net/jdk/pull/2948


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic