RFR (XXXS): 8193234: When using -Xcheck:jni an internally allocated buffer can leak

David Holmes david.holmes at oracle.com
Fri Feb 8 22:07:50 UTC 2019


Thanks Harold!

David

On 9/02/2019 7:33 am, Harold Seigel wrote:
> Looks good!
> 
> Harold
> 
> On 2/8/2019 1:07 AM, David Holmes wrote:
>> Updated webrev:
>>
>> http://cr.openjdk.java.net/~dholmes/8193234/webrev.v2/
>>
>> Can I get a second review please.
>>
>> Thanks,
>> David
>>
>> On 8/02/2019 8:59 am, David Holmes wrote:
>>> Hi Aleksey,
>>>
>>> Thanks for looking at this.
>>>
>>> On 8/02/2019 1:53 am, Aleksey Shipilev wrote:
>>>> On 2/7/19 11:13 AM, David Holmes wrote:
>>>>> bug: https://bugs.openjdk.java.net/browse/JDK-8193234
>>>>> webrev: http://cr.openjdk.java.net/~dholmes/8193234/webrev
>>>>
>>>> The patch looks good.
>>>>
>>>>> Full details in bug report but basically with the use of 
>>>>> GuardedMemory in the checked versions of
>>>>> the *ArrayCritical functions we always have to release the 
>>>>> GuardedMemory copy.
>>>>
>>>> Ah, oops. It seems fine to free the copy of guarded memory 
>>>> unconditionally. While you are at it,
>>>> switch statement can also be simplified by coalescing case labels. 
>>>> It also makes the dichotomy
>>>> between "normal" and "abort" paths evident:
>>>>
>>>>    switch (mode) {
>>>>    case 0:
>>>>    case JNI_COMMIT:
>>>>      memcpy(orig_result, carray, sz);
>>>>      break;
>>>>    case JNI_ABORT:
>>>>      break;
>>>>    default:
>>>>      ...
>>>>    }
>>>
>>> The coalescing is only possible because we never uses copies and so 
>>> never have to free them - which is the difference between modes 0 and 
>>> JNI_COMMIT. But I can do that and add a clarifying comment.
>>>
>>> Thanks,
>>> David
>>>
>>>> -Aleksey
>>>>


More information about the hotspot-runtime-dev mailing list