RFR(XS): JDK-8214272: Don't use memset to initialize arrays of MemoryUsage in memoryManager.cpp

Roman Kennke rkennke at redhat.com
Tue Nov 27 15:30:03 UTC 2018


Good!

I'm also getting similar warnings in:

output.cpp:1707
zForwardingTable.cpp:42

Roman

> The hint is from Kim Barrett.
> 
> Surprisingly exactly this kind of warning is not silent just in 2
> places. I added matcher.cpp and re-submitted dev-submit tests.
> 
> webrev: http://cr.openjdk.java.net/~dchuyko/8214272/webrev.01/
> 
> -Dmitry
> 
> On 11/27/18 5:39 PM, Roman Kennke wrote:
>> Oh. Right. There is always something to learn about C++ :-) Your patch
>> looks good then. And actually, may want to fix 'my' change too, if you
>> feel like it. And I believe gcc8 prints more similar warnings.
>>
>> Thanks,
>> Roman
>>
>>
>>> Doesn't "= MemoryUsage()" actually imply "delete onstack MemoryUsage"
>>> after copying? Probably safe here but it may be not safe in general.
>>>
>>> -Dmitry
>>>
>>> On 11/27/18 5:14 PM, Roman Kennke wrote:
>>>> I think Aleksey's version is clearer. I used a similar approach in a
>>>> fix
>>>> for the same issue:
>>>>
>>>> http://hg.openjdk.java.net/jdk/jdk/rev/710e5a66a64e
>>>>
>>>> Roman
>>>>
>>>>
>>>>> Placement new sets values placed in arrays. The arrays as a whole are
>>>>> managed as before. I.e.:
>>>>>
>>>>> GCStatInfo::~GCStatInfo() {
>>>>>     FREE_C_HEAP_ARRAY(MemoryUsage*, _before_gc_usage_array);
>>>>>     FREE_C_HEAP_ARRAY(MemoryUsage*, _after_gc_usage_array);
>>>>> }
>>>>>
>>>>> -Dmitry
>>>>>
>>>>> On 11/27/18 5:00 PM, Aleksey Shipilev wrote:
>>>>>> On 11/27/18 2:51 PM, Dmitry Chuyko wrote:
>>>>>>> rfe: https://bugs.openjdk.java.net/browse/JDK-8214272
>>>>>>> webrev: http://cr.openjdk.java.net/~dchuyko/8214272/webrev.00/
>>>>>> Ummmm. Aren't you leaking memory by calling "new" without "delete"?
>>>>>>
>>>>>> Consider this instead:
>>>>>>
>>>>>> diff -r a554db76b2e9 src/hotspot/share/services/memoryManager.cpp
>>>>>> --- a/src/hotspot/share/services/memoryManager.cpp      Fri Nov 23
>>>>>> 11:22:31 2018 +0100
>>>>>> +++ b/src/hotspot/share/services/memoryManager.cpp      Tue Nov 27
>>>>>> 14:56:09 2018 +0100
>>>>>> @@ -169,7 +169,8 @@
>>>>>>       _start_time = 0L;
>>>>>>       _end_time = 0L;
>>>>>> -  size_t len = _usage_array_size * sizeof(MemoryUsage);
>>>>>> -  memset(_before_gc_usage_array, 0, len);
>>>>>> -  memset(_after_gc_usage_array, 0, len);
>>>>>> +  for (int i = 0; i < _usage_array_size; i++) {
>>>>>> +    _before_gc_usage_array[i] = MemoryUsage();
>>>>>> +    _after_gc_usage_array[i]  = MemoryUsage();
>>>>>> +  }
>>>>>>     }
>>>>>>
>>>>>> See, for example:
>>>>>>     https://bugs.openjdk.java.net/browse/JDK-8213745
>>>>>>
>>>>>> -Aleksey
>>>>>>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20181127/deb8295c/signature.asc>


More information about the hotspot-gc-dev mailing list