--- old/src/share/vm/jfr/support/jfrThreadLocal.cpp 2021-01-22 14:12:44.519219088 +0800 +++ new/src/share/vm/jfr/support/jfrThreadLocal.cpp 2021-01-22 14:12:44.402214519 +0800 @@ -55,7 +55,11 @@ _stack_trace_hash(0), _stackdepth(0), _entering_suspend_flag(0), - _dead(false) {} + _dead(false) { + + Thread* thread = Thread::current_or_null(); + _parent_trace_id = thread != NULL ? thread->jfr_thread_local()->trace_id() : (traceid)0; +} u8 JfrThreadLocal::add_data_lost(u8 value) { _data_lost += value; @@ -78,6 +82,7 @@ static void send_java_thread_start_event(JavaThread* jt) { EventThreadStart event; event.set_thread(jt->jfr_thread_local()->thread_id()); + event.set_parentThread(jt->jfr_thread_local()->parent_thread_id()); event.commit(); } @@ -89,6 +94,9 @@ send_java_thread_start_event((JavaThread*)t); } } + if (t->jfr_thread_local()->has_cached_stack_trace()) { + t->jfr_thread_local()->clear_cached_stack_trace(); + } } static void send_java_thread_end_events(traceid id, JavaThread* jt) {