RFR (M) 8005012: Add WB APIs to better support NMT testing
Zhengyu Gu
zhengyu.gu at oracle.com
Fri Jan 11 06:16:21 PST 2013
Please see comments inline.
On 1/11/2013 1:48 AM, David Holmes wrote:
> On 10/01/2013 8:52 PM, Christian Törnqvist wrote:
>> Hi David,
>>
>>> This method blocks while holding the query_lock - is that intended?
>>
>> Yes, this will prevent NMT from shutting down and freeing the data
>> structures we're using.
>
> Ok. Of course this screams deadlock potential to me :)
>
No, I don't think that there is deadlock potential. _query_lock is used
to serialize NMT queries, there is no NMT related lock can be acquired
before it.
>>> Aside: the MemSnapshot::wait method is troubling me. What are you
>>> waiting upon ie what state condition? The notification is done in the
>>> destructor but how can the destructor be called if someone is calling
>>> wait() upon the object's lock ??? It means you are destroying an
>>> object that is still in use, including the lock that is being waited
>>> upon!!!
>>
Yes, have notify_all in destructor is a really bad idea, but you do need
notify_all before delete memSnapshot, since
MemTracker::wbtest_wait_for_data_merge() can still wait on snapshot ...
How about in MemTracker::final_shutdown()
_snapshot->notify_all_waiters();
delete _snapshot;
Thanks,
-Zhengyu
>> This was obviously incorrect, thanks for catching this. I've removed
>> it and done some small other cleanups, a new webrev can be found at
>> http://cr.openjdk.java.net/~ehelin/8005012/webrev.01/
>
> I don't see memSnapshot in the new webrev - was this all new stuff
> that is now gone?
>
> David
>
>
>> Thanks,
>> Christian
>>
>> -----Original Message-----
>> From: David Holmes
>> Sent: den 19 december 2012 00:21
>> To: Christian Törnqvist
>> Cc: hotspot-runtime-dev at openjdk.java.net; Zhengyu Gu
>> Subject: Re: RFR (M) 8005012: Add WB APIs to better support NMT testing
>>
>> On 19/12/2012 12:10 AM, Christian Törnqvist wrote:
>>> Hi everyone,
>>>
>>> This change is about adding three new WB APIs to better support NMT
>>> testing. The changes are:
>>>
>>> ·A Test memory type, used by WB API's NMTAllocTest and
>>> NMTFreeTestMemory
>>>
>>> ·Added a WaitForDataMerge WB API to be able to block until the current
>>> generation has been merged and is visible, most of this work was done
>>> by Zhengyu Gu.
>>
>> This method blocks while holding the query_lock - is that intended?
>>
>> Aside: the MemSnapshot::wait method is troubling me. What are you
>> waiting upon ie what state condition? The notification is done in the
>> destructor but how can the destructor be called if someone is calling
>> wait() upon the object's lock ??? It means you are destroying an
>> object that is still in use, including the lock that is being waited
>> upon!!!
>>
>> David
>> -----
>>
>>>
>>> Webrev can be found at:
>>>
>>> http://cr.openjdk.java.net/~ehelin/8005012/webrev.00/
>>>
>>> Thanks,
>>>
>>> Christian
>>>
More information about the hotspot-runtime-dev
mailing list