RFR: 8323664: java/awt/font/JNICheck/FreeTypeScalerJNICheck.java still fails with JNI warning on some Windows configurations [v3]
Christoph Langer
clanger at openjdk.org
Wed Jan 31 06:27:01 UTC 2024
On Tue, 30 Jan 2024 14:03:39 GMT, Alexey Ivanov <aivanov at openjdk.org> wrote:
> Now that I re-read the problem statement and the exception handling JNI, the fix doesn't look correct to me.
>
> What does the warning say?
>
> > WARNING in native method: JNI call made without checking exceptions when required to from `CallStaticVoidMethodV` at `sun.awt.Win32GraphicsEnvironment.initDisplay`
>
> To me, it means that `Win32GraphicsEnvironment.initDisplay` is the problem. You found that `DWMIsCompositionEnabled` calls a static method via `JNU_CallStaticMethodByName`.
>
> As far as I can see, it's the last statement of the `DWMIsCompositionEnabled` function.
>
> Then `Java_sun_awt_Win32GraphicsEnvironment_initDisplay` calls `initScreens` which, seemingly, can call other JNI methods.
>
Well, yes - however the initScreens only calls other JNI methods through the assert callback of debug builds, so not a general thing. The initial proposal for a fix was to add an exception check right to the call of [JNU_CallStaticMethodByName(...,"dwmCompositionChanged",...)](https://github.com/openjdk/jdk/pull/17404/commits/32128744252d75104e0d19f5eb701ffdc7b3d417) but was dismissed by @prrace
I think the current proposal makes the assertion callback more resilient to JNI warnings in general, so I guess it's not bad.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/17404#issuecomment-1918464139
More information about the client-libs-dev
mailing list