RFR: 8364434: Inconsistent BufferedContext state after GC [v5]

Nikita Gubarkov ngubarkov at openjdk.org
Tue Aug 12 17:16:12 UTC 2025


On Tue, 12 Aug 2025 15:25:03 GMT, Alexander Zvegintsev <azvegint at openjdk.org> wrote:

>> Nikita Gubarkov has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   8364434: Inconsistent BufferedContext state after GC
>>   
>>   Skip the test if Color was not GC'ed
>
> test/jdk/java/awt/ColorClass/WeakColorTest.java line 39:
> 
>> 37:  * @summary Check that garbage-collecting Color before accelerated painting is complete does not cause artifacts.
>> 38:  * @library /test/lib
>> 39:  * @run main/othervm -Xms16m -Xmx16m WeakColorTest
> 
> I tried 3 different pipelines on Linux:
> 
> 
>  * @run main/othervm -Xms16m -Xmx16m -Dsun.java2d.opengl=false -Dsun.java2d.xrender=false WeakColorTest
>  * @run main/othervm -Xms16m -Xmx16m -Dsun.java2d.opengl=true -Dsun.java2d.xrender=false WeakColorTest
>  * @run main/othervm -Xms16m -Xmx16m -Dsun.java2d.opengl=false -Dsun.java2d.xrender=true WeakColorTest // default
> 
> 
> OGL is the only one using the `BufferedContext`.
> It passes on SW, and OGL pipelines, the test is skipped on Xrender (the default pipeline).
> The results are the same with or without the fix.
> 
> As we know that the test is always skipped on Linux on the default pipeline, shouldn't we just just do not run it with ` @requires (os.family != "linux")` to save some CI resources?

Although the issues are theoretically possible on any platform when using `BufferedContext`, in practice it is only known to reproduce on Metal.
So if we consider only known scenarios, we could as well limit it to macOS. If we consider a theoretical regression scenario, having it on every platform could also be helpful (but not with default XRender mode on Linux of course).
But having a non-accelerated pipeline on Linux by default may not be permanent either - when we finish our ongoing Vulkan work under Wakefield, we could eventually make it default. So maybe just leave it for all platforms, wdyt?

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

PR Review Comment: https://git.openjdk.org/jdk/pull/26576#discussion_r2270598793


More information about the client-libs-dev mailing list