RFR: 8185746: Remove Mutex destructor assertion
Kim Barrett
kim.barrett at oracle.com
Wed Aug 2 23:55:07 UTC 2017
> 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;
More information about the hotspot-runtime-dev
mailing list