Code review request: three native memory tracking related bugs

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Jul 13 17:36:43 PDT 2012


Zhengyu Gu wrote:
> 7181989: NMT ON: Assertion failure when NMT checks thread's native
> CR: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7181989
> Webrev: http://cr.openjdk.java.net/~zgu/7181989/webrev.00/

Good.

> 
> We try to assert Thread's stack base to ensure that 
> Thread::record_stack_base_and_size() to record native stack to NMT, but 
> there is scenario that the thread fails to start, which no native stack 
> is created and should not be asserted.
> 
> 7181986: NMT ON: Assertion failure when running jdi 
> ExpiredRequestDeletionTest
> CR: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7181986
> Webrev: http://cr.openjdk.java.net/~zgu/7181986/webrev.00/

Good.

> 
> This is a racing condition when C/C++ runtime exit handler is ran
> before NMT worker thread exits. The exit handler calls _query_lock's
> destructor while NMT worker thread is still holding it. The fix is to
> make _query_lock a heap object, instead of static object, but the
> drawback is that, it does not seem that _query_lock can be safely deleted.
> 
> Also, I reassigned MemSnaphot lock and query lock, so they participate 
> in the deadlock detection logic.
> 
> 7182543: NMT ON: Aggregate a few NMT related bugs
> CRhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7182543
> Webrev: http://cr.openjdk.java.net/~zgu/7182543/webrev.00/

I think the next should be guarantee() instead of check since all MemRecorders 
should be deleted in preceding code:

  if (MemRecorder::_instance_count == 0) {

Vladimir

> 
> - Fixed generations_in_used calculation
> - Wait MemRecorder instance count to drop to zero before completely 
> shutdown NMT
> - Added assertion for JavaThread in _thread_blocked state.
> 
> 
> Thanks,
> 
> -Zhengyu
> 


More information about the hotspot-dev mailing list