review request for 6740526

Daniel D. Daugherty Daniel.Daugherty at Sun.COM
Mon Aug 25 06:44:00 PDT 2008


There is already some special casing for the Terminator_lock
relative to the Safepoint_lock. Perhaps there is need for a
more complete special case for the Terminator_lock. Or perhaps
we need to have the ability to make orthogonal locks and then
morph all the existing special case locks into orthogonal locks.

I guess what I'm saying is that we need to revisit use of the
Terminator_lock and its interaction with other locks.

Dan


David Holmes - Sun Microsystems wrote:
> Hi Xiaobin,
>
> I'd add to the comment:
>
> "The right way to prevent termination would be to acquire the 
> Terminator_lock, but we can't do that without violating the lock rank 
> checking in some cases."
>
> Cheers,
> David
>
> Xiaobin Lu said the following on 08/23/08 11:51:
>> Webrev: http://javaweb.sfbay/~xl116366/webrev/6740526/
>>
>> 6740526:  sun/management/HotspotThreadMBean/GetInternalThreads.java 
>> test failed
>>
>> Details:
>>
>> The above test failure is caused by a recent fix for 6608862. The 
>> problem there was that when some JVMTI operation was made to examine 
>> all the threads' state and while in the meantime, the WatcherThread 
>> is actually exiting. This makes the ThreadClosure->do_thread call 
>> fail since we are now referencing a NULL pointer. To preserve 
>> WatcherThread and its data inside memory, we grab the Terminator_lock 
>> before making a call on it. So the thread calling WatcherThread::stop 
>> will be blocked and therefore can't set the reference to NULL and 
>> destroy the structure. I assumed that these operations (basically 
>> Threads::threads_do) are always called at safepoint, therefore, the 
>> rank checking when acquiring the Terminator_lock will be bypassed. 
>> The assumption is wrong since obviously some calls originating from 
>> management.cpp for example, aren't issued at safepoint, thus making 
>> the rank checking fail.
>>
>> The fix is that we remove the lock acquisition. As documented in the 
>> comment, strictly speaking, this isn't sufficient to make sure the 
>> data for WatcherThread is still there when the call is actually being 
>> made, but the chance of that is extremely small.
>>
>> Reviewed by:
>>
>> Verified by:
>> All tests under sun/management
>> Test reported in 6608862
>> PRT
>>
>> Thanks in advance!
>>
>> -Xiaobin



More information about the hotspot-dev mailing list