review request for 6740526
Xiaobin Lu
Xiaobin.Lu at Sun.COM
Fri Aug 22 18:51:08 PDT 2008
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