On Tue, 9 Nov 2021 07:57:55 GMT, Matthias Baesken <mbaes...@openjdk.org> wrote:

> The new test java/awt/font/JNICheck/FreeTypeScalerJNICheck.java introduced 
> with https://bugs.openjdk.java.net/browse/JDK-8269223 adds -Xcheck:jni to an 
> awt related test, and shows on Windows server 2019 the following JNI warning 
> , so the test  JNICheck/FreeTypeScalerJNICheck.java fails on this Windows 
> version.
> 
> :stdErr:
> Thu Oct 28 01:27:10 CEST 2021
> stdout: [WARNING in native method: JNI call made without checking exceptions 
> when required to from CallStaticVoidMethodV
>                at 
> sun.awt.Win32GraphicsEnvironment.initDisplay(java.desktop@18.0.0.1-internal/Native
>  Method)
>                at 
> sun.awt.Win32GraphicsEnvironment.initDisplayWrapper(java.desktop@18.0.0.1-internal/Win32GraphicsEnvironment.java:95)
>                at 
> sun.awt.Win32GraphicsEnvironment.<clinit>(java.desktop@18.0.0.1-internal/Win32GraphicsEnvironment.java:63)
>                at 
> sun.awt.PlatformGraphicsInfo.createGE(java.desktop@18.0.0.1-internal/PlatformGraphicsInfo.java:34)
>                at 
> java.awt.GraphicsEnvironment$LocalGE.createGE(java.desktop@18.0.0.1-internal/GraphicsEnvironment.java:93)
>                at 
> java.awt.GraphicsEnvironment$LocalGE.<clinit>(java.desktop@18.0.0.1-internal/GraphicsEnvironment.java:84)
>                at 
> java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(java.desktop@18.0.0.1-internal/GraphicsEnvironment.java:106)
>                at 
> FreeTypeScalerJNICheck.runTest(FreeTypeScalerJNICheck.java:53)
>                at FreeTypeScalerJNICheck.main(FreeTypeScalerJNICheck.java:44)
> 
> We can get rid of the warning by adjusting a JNU_CallStaticMethodByName call 
> in awt_Win32GraphicsEnv.cpp .

src/java.desktop/windows/native/libawt/windows/awt_Win32GraphicsEnv.cpp line 
129:

> 127: 
> 128:     JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
> 129:     JNU_CallStaticMethodByName(env, &ignoreException,

As far as understand from the previous fix the "ignoreException" parameter does 
not suppress the currently raised exception, it just suppresses the warning in 
the XCheck:jni. So it will be good to propagate an exception to the user if 
this code is executed on the "java" thread, and log it by the trace macro if it 
is executed on a toolkit thread.

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

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

Reply via email to