On Thu, 13 Apr 2023 13:03:37 GMT, Dmitry Cherepanov <[email protected]>
wrote:
> This PR suggests to move generalPrimitives array to a new static nested
> GeneralPrimitives class to eliminate the possible deadlock. The Blit class
> (and other classes that register as general primitives) calls to
> GeneralPrimitives.register from the static initializer block without
> acquiring lock on the GraphicsPrimitiveMgr class.
>
> This PR also includes a jtreg regression test which reproduces this issue
> without the patch and passes with the patch. Running tests from
> test/jdk/sun/java2d didn't reveal any issues with this patch.
src/java.desktop/share/classes/sun/java2d/loops/GraphicsPrimitiveMgr.java line
270:
> 268: }
> 269:
> 270: static GraphicsPrimitive locate(int primTypeID) {
it should be marked as `synchronized` too. Otherwise there will possible data
race between other thread called `register`
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13459#discussion_r1165711469