RFR: JDK-8276809: java/awt/font/JNICheck/FreeTypeScalerJNICheck.java shows JNI warning on Windows
Phil Race
prr at openjdk.java.net
Tue Nov 9 19:48:35 UTC 2021
On Tue, 9 Nov 2021 19:22:18 GMT, Sergey Bylokhov <serb at 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 at 18.0.0.1-internal/Native Method)
>> at sun.awt.Win32GraphicsEnvironment.initDisplayWrapper(java.desktop at 18.0.0.1-internal/Win32GraphicsEnvironment.java:95)
>> at sun.awt.Win32GraphicsEnvironment.<clinit>(java.desktop at 18.0.0.1-internal/Win32GraphicsEnvironment.java:63)
>> at sun.awt.PlatformGraphicsInfo.createGE(java.desktop at 18.0.0.1-internal/PlatformGraphicsInfo.java:34)
>> at java.awt.GraphicsEnvironment$LocalGE.createGE(java.desktop at 18.0.0.1-internal/GraphicsEnvironment.java:93)
>> at java.awt.GraphicsEnvironment$LocalGE.<clinit>(java.desktop at 18.0.0.1-internal/GraphicsEnvironment.java:84)
>> at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(java.desktop at 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.
Yeah this looks like the wrong fix.
-Xcheck:jni only warns like this if there are actual exceptions, doesn't it ?
So if we had one, where was it ?
Note that Windows Server 2019 is a staple of the CI testing at Oracle and the test hasn't failed in the > 2 months since it was integrated, so I'm wondering why it fails in your case ?
Was this a debug build perhaps ?
-------------
PR: https://git.openjdk.java.net/jdk/pull/6306
More information about the client-libs-dev
mailing list