RFR (S): JDK-8164086: Checked JNI pending exception check should be cleared when returning to Java frame

David Holmes david.holmes at oracle.com
Wed Sep 7 05:37:12 UTC 2016


On 6/09/2016 5:51 PM, David Simms wrote:
>
> Updated webrev: http://cr.openjdk.java.net/~dsimms/8164086/webrev3/

No further comments from me, but note my original comment re the 
platform specific code.

More below.

> On 06/09/16 01:20, David Holmes wrote:
>> Hi David,
>>
>> On 5/09/2016 6:02 PM, David Simms wrote:
>>> Hi David,
>>>
>>> I can make the checks silent, but the launcher itself produces warnings
>>> from checked JNI (it's use of unchecked Java method invocations), and
>>> this causes the test
>>> (http://cr.openjdk.java.net/~dsimms/8164086/webrev2/hotspot/test/runtime/jni/checked/TestCheckedJniExceptionCheck.java.html)
>>>
>>> to fail, with unchecked exception warnings popping up in the output.
>>
>> I've looked back at your original changes in this area but I'm still
>> not seeing exactly where the unchecked back-to-back JNI calls are
>> happening. For example NewPlatformString can return with an exception
>> pending, but will return NULL, and the calling code has checks for NULL.
>>
>
> LoadMainClass:
>
> http://hg.openjdk.java.net/jdk9/hs/jdk/file/090cbd92c744/src/java.base/share/native/libjli/java.c#l1530
>
>
> Calls "CallStaticObjectMethod" from "NewPlatformString", then on line
> 1531 make another call "CallStaticObjectMethod".
>
> No exception check is made. The Xcheck:jni code cannot interpreter the
> return value from JNI "Call<X>Method" functions, so it triggers the
> "unchecked" exception warning at line 1531.

Ah I see. No bug in the launcher code though as it only makes the second 
JNI call if the original did not return NULL and hence there can be no 
exception pending.

This is a limitation of the unchecked warning facility as it can't take 
control flow into account. :(


>
>>> But yeah, I could adjust the test the ignore any start-up warnings and
>>> drop the changes to the launcher...
>>
>> Unless we can more clearly identify exactly where the launcher has a
>> problem I would prefer not to involve it in these changes. But I would
>> like to understand exactly why the launcher is triggering the check.
>>
>
> Dropped launcher changes, adjusted the test to ignore any previous
> warnings.

Yep - that seems best: only monitor the test itself not the overall VM 
operation.

Thanks,
David H.
-------

> Cheers
> /David Simms


More information about the core-libs-dev mailing list