RFR: 8185746: Remove Mutex destructor assertion

David Holmes david.holmes at oracle.com
Thu Aug 3 00:09:48 UTC 2017


On 3/08/2017 9:55 AM, Kim Barrett wrote:
>> On Aug 2, 2017, at 7:49 PM, coleen.phillimore at oracle.com wrote:
>>
>>
>> Looks good.
> 
> Thanks.
> 
>> On 8/2/17 7:36 PM, Kim Barrett wrote:
>>>> On Aug 2, 2017, at 7:31 PM, Kim Barrett <kim.barrett at oracle.com> wrote:
>>>>
>>>>> On Aug 2, 2017, at 7:23 PM, David Holmes <david.holmes at oracle.com> wrote:
>>>>>
>>>>> Hi Kim,
>>>>>
>>>>> On 3/08/2017 8:41 AM, Kim Barrett wrote:
>>>>>> Please review this small change to improve the debugging experience
>>>>>> when a mutex is destroyed in a bad state.
>>>>>> I've removed the assert in ~Mutex, which was making the same checks as
>>>>>> in ~Monitor, but providing much less information.
>>>>> Okay. Please can you add a comment to the ~Mutex noting that eg:
>>>>>
>>>>> // Defer any state checking to ~Monitor
>>>>> Mutex::~Mutex() { }
>>>> Well, I was waffling over just removing it completely.
>>> Note also that the structure here makes it pretty easy to accidentally
>>> invoke undefined behavior by destructor slicing. That's an entirely
>>> different problem, but it bugs me...
>> Can you describe what you mean by "destructor slicing"?  Do you mean calling ~Monitor on an instance of Mutex?
> 
> Yes, exactly that.  Typically by something like
> 
> Monitor* m = <mutex>;
>> delete m;

virtual destructor needed?

David



More information about the hotspot-runtime-dev mailing list