Round 2 RFR (S) 6424123: JVM crashes on failed 'strdup' call.
Zhengyu Gu
zhengyu.gu at oracle.com
Sun Jun 8 12:48:43 UTC 2014
Hi David,
On 6/8/2014 5:03 AM, David Holmes wrote:
> Hi Zhengyu,
>
> Still a bit perplexed by the aim here. Why replace non-null checked
> strdup calls with non-null os::strdup?
::strdup() is not tracked by NMT, but os::strdup() is.
> If the issue is that the result of strdup must be checked then it must
> be checked. Why add DuplicateString instead of changing what
> os::strdup does?
I replaced strdup()/os::strdup() with DuplicateString(), where caller
does not check null pointer. If caller checks null pointer, I left it
alone.
DuplicateString() mirrors what AllocateHeap() does, and os::strdup()
mirrors os::malloc(). AllocateHeap()/DuplicateString() can handle OOM
(by default), but os::strdup()/os::malloc() do not.
Thanks,
-Zhengyu
>
>
> Thanks,
> David
>
> On 7/06/2014 3:05 AM, Zhengyu Gu wrote:
>> Updated webrev introduces a new DuplicateString() function, that handles
>> OOM, similar to AllocateHeap(), and replaces the call sites that do not
>> check NULL pointer with this DuplicateString().
>>
>> http://cr.openjdk.java.net/~zgu/6424123/webrev.01/
>>
>> Thanks,
>>
>> -Zhengyu
>>
>>
>>
>> On 6/4/2014 4:32 PM, Zhengyu Gu wrote:
>>> JVM should avoid C library's strdup() and use os::strdup() instead.
>>> os::strdup() handles OOM, so can avoid JVM crash.
>>>
>>> Also, made limited scope of code cleanup, which makes memory ownership
>>> more explicit, so they can be claimed by object's destructors.
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-6424123
>>> Webrev: http://cr.openjdk.java.net/~zgu/6424123/webrev.00/
>>>
>>> Tests:
>>> - JPRT
>>> - vm.quick.testlist on Linux x64.
>>>
>>> Thanks,
>>>
>>> -Zhengyu
>>
More information about the hotspot-runtime-dev
mailing list