RFR: 8336382: Fixes error reporting in loading AWT and fonts [v10]
Alexey Ivanov
aivanov at openjdk.org
Wed Jan 29 12:18:58 UTC 2025
On Mon, 27 Jan 2025 16:12:34 GMT, Karm Michal Babacek <duke at openjdk.org> wrote:
>> src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c line 70:
>>
>>> 68: graphicsEnvClass = (*env)->FindClass(env,
>>> 69: "java/awt/GraphicsEnvironment");
>>> 70: CHECK_EXCEPTION_FATAL(env, "FindClass java/awt/GraphicsEnvironment failed");
>>
>> If `FindClass` fails to find the class, a `NoClassDefFoundError` should be raised. This function returns immediately (a value of `true`). The caller of this function should check if there's a pending exception and perform an appropriate action.
>>
>> In this case, the function is called from
>>
>> https://github.com/openjdk/jdk/blob/955bf185c38ec0fcedb0a549461fc85367b37fbb/src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c#L130-L132
>>
>> If there's a pending exception, it should bail out and let the exception be thrown on the Java side.
>>
>> If it doesn't, the pending exception makes `JNU_NewStringPlatform` fail at
>>
>> https://github.com/openjdk/jdk/blob/955bf185c38ec0fcedb0a549461fc85367b37fbb/src/java.desktop/unix/native/libawt/awt/awt_LoadLibrary.c#L149-L150
>>
>> ---
>>
>> Ah! There's no Java code to catch the exception… `AWT_OnLoad` is essentially `JNI_OnLoad`. In this case, `CHECK_EXCEPTION_FATAL` seems right.
>
> Hello @aivanov-jdk,
>
> Thank you for looking into the review.
>
> Is there anything I can do to move things forward right now? It's not clear to me whether you agree or disagree with the latest iteration inspired by @mrserb 's review.
>
>
> Cheers
> Karm
Sorry, I didn't make myself clear.
Since there's no Java code to catch the exception, there's no other option but to call `(*env)->FatalError` via `CHECK_EXCEPTION_FATAL`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20169#discussion_r1933775711
More information about the client-libs-dev
mailing list