On Thu, 22 Jun 2023 10:10:07 GMT, Kevin Walls <kev...@openjdk.org> wrote:
> JNI calls were identified, where we do not check for a pending Exception > afterwards. > > (JDK-8162530 cleaned up up some of these kind of issues some years back, but > more were found.) > > I tested a code change to manually create an Exception before some of the new > ExceptionCheck calls, and this is correctly recognised, we see an Exception > thrown by the native getLastGcInfo0, e.g. > > java.lang.NullPointerException: XXX Test Exception > at > jdk.management/com.sun.management.internal.GcInfoBuilder.getLastGcInfo0(Native > Method) > at > jdk.management/com.sun.management.internal.GcInfoBuilder.getLastGcInfo(GcInfoBuilder.java:77) > at > jdk.management/com.sun.management.internal.GarbageCollectorExtImpl.getLastGcInfo(GarbageCollectorExtImpl.java:69) > at LastGCInfo.main(LastGCInfo.java:53) > at > java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) > at java.base/java.lang.reflect.Method.invoke(Method.java:580) > at > com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138) > at java.base/java.lang.Thread.run(Thread.java:1570) > > Tested with all of test/jdk/com/sun/management including > test/jdk/com/sun/management/GarbageCollectorMXBean/LastGCInfo.java Looks fine. It may worth refactoring the code to set an element in an utility method. jobject obj = JNU_NewObjectByName(env, class_name, signature, value); if ((*env)->ExceptionCheck(env)) { return; } (*env)->SetObjectArrayElement(env, array, index, obj); ------------- PR Review: https://git.openjdk.org/jdk/pull/14613#pullrequestreview-1493765649