--- old/src/share/vm/services/threadService.hpp 2015-12-19 00:22:06.728968286 +0900 +++ new/src/share/vm/services/threadService.hpp 2015-12-19 00:22:06.584968987 +0900 @@ -495,6 +495,7 @@ } } else { _active = false; + _stat = NULL; } } @@ -579,6 +580,7 @@ } } else { _active = false; + _stat = NULL; } } --- old/src/share/vm/trace/traceEventClasses.xsl 2015-12-19 00:22:07.302965489 +0900 +++ new/src/share/vm/trace/traceEventClasses.xsl 2015-12-19 00:22:07.157966195 +0900 @@ -136,13 +136,21 @@ void writeEvent(void) { - ResourceMark rm; + bool thread_has_resource = Thread::current() != NULL; + ResourceArea *area = thread_has_resource + ? Thread::current()->resource_area() + : new (mtTracing)ResourceArea(Chunk::non_pool_size); + ResourceMark rm(area); if (UseLockedTracing) { ttyLocker lock; writeEventContent(); } else { writeEventContent(); } + + if (!thread_has_resource) { + delete area; + } } };