RFR(S): JDK-8030708: warnings from b119 for jdk/src/share/back: JNI exception pending
David Holmes
david.holmes at oracle.com
Thu Oct 16 00:24:44 UTC 2014
On 16/10/2014 12:33 AM, Dmitry Samersoff wrote:
> David,
>
> Sorry, copied wrong function!
>
> I mean this call
>
> weakRef = JNI_FUNC_PTR(env,NewWeakGlobalRef)(env, ref);
>
> that can post OutOfMemoryError
Okay, so shouldn't that be where the exception is cleared:
/* Create weak reference to make sure we have a reference */
weakRef = JNI_FUNC_PTR(env,NewWeakGlobalRef)(env, ref);
if (weakRef == NULL) {
+ // < clear exception here >
jvmtiDeallocate(node);
return NULL;
}
Thanks,
David
-----
> commonRef_refToID() ->
>
> createNode(JNIEnv *env, jobject ref) ->
>
> weakRef = JNI_FUNC_PTR(env,NewWeakGlobalRef)(env, ref);
>
> -Dmitry
>
> On 2014-10-15 16:21, David Holmes wrote:
>> On 15/10/2014 8:39 PM, Dmitry Samersoff wrote:
>>> On 2014-10-15 14:27, David Holmes wrote:
>>>> On 15/10/2014 8:08 PM, Dmitry Samersoff wrote:
>>>>> Please review the fix:
>>>>>
>>>>> http://cr.openjdk.java.net/~dsamersoff/JDK-8030708/webrev.01/
>>>>>
>>>>> Added missed exception checks.
>>>>
>>>> src/jdk.jdwp.agent/share/native/libjdwp/outStream.c
>>>>
>>>> What is potentially posting the exception?
>>>
>>> JvmtiEnv::GetTag(jobject object, jlong* tag_ptr) called from
>>> commonRef_refToID()
>>
>> You mean this call:
>>
>> error = JVMTI_FUNC_PTR(gdata->jvmti,GetTag)(gdata->jvmti, ref, &tag);
>
> x
>>
>> in findNodeByRef which is called by commonRef_refToID? JVM TI doesn't
>> post exceptions.
>>
>> "JVM TI functions never throw exceptions; error conditions are
>> communicated via the function return value. Any existing exception state
>> is preserved across a call to a JVM TI function."
>>
>> http://docs.oracle.com/javase/8/docs/platform/jvmti/jvmti.html
>>
>> David
>>
>>> -Dmitry
>>>
>>>
>
>
More information about the serviceability-dev
mailing list