Mercurial > hg > graal-compiler
changeset 6745:6dfc6a541338
7198529: NPG: assert with NMT code in Thread destructor
Summary: Thread stack's base address can be NULL if it is not started or exited before recording the base
Reviewed-by: kvn, fparain
author | zgu |
---|---|
date | Fri, 14 Sep 2012 12:55:50 -0400 |
parents | 7edbe32b9802 |
children | 9b076bc3ab67 |
files | src/share/vm/runtime/thread.cpp |
diffstat | 1 files changed, 8 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/runtime/thread.cpp Thu Sep 13 22:09:16 2012 +0200 +++ b/src/share/vm/runtime/thread.cpp Fri Sep 14 12:55:50 2012 -0400 @@ -328,8 +328,14 @@ // Reclaim the objectmonitors from the omFreeList of the moribund thread. ObjectSynchronizer::omFlush (this) ; - address low_stack_addr = stack_base() - stack_size(); - MemTracker::release_thread_stack(low_stack_addr, stack_size(), this); + // stack_base can be NULL if the thread is never started or exited before + // record_stack_base_and_size called. Although, we would like to ensure + // that all started threads do call record_stack_base_and_size(), there is + // not proper way to enforce that. + if (_stack_base != NULL) { + address low_stack_addr = stack_base() - stack_size(); + MemTracker::release_thread_stack(low_stack_addr, stack_size(), this); + } // deallocate data structures delete resource_area();