7198529: NPG: assert with NMT code in Thread destructor
Thread stack's base address can be NULL if it is not started or exited before recording the base Reviewed-by: kvn, fparain
This commit is contained in:
parent
00c30b04f4
commit
119c20297b
@ -328,8 +328,14 @@ Thread::~Thread() {
|
|||||||
// Reclaim the objectmonitors from the omFreeList of the moribund thread.
|
// Reclaim the objectmonitors from the omFreeList of the moribund thread.
|
||||||
ObjectSynchronizer::omFlush (this) ;
|
ObjectSynchronizer::omFlush (this) ;
|
||||||
|
|
||||||
address low_stack_addr = stack_base() - stack_size();
|
// stack_base can be NULL if the thread is never started or exited before
|
||||||
MemTracker::release_thread_stack(low_stack_addr, stack_size(), this);
|
// 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
|
// deallocate data structures
|
||||||
delete resource_area();
|
delete resource_area();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user