src/share/vm/runtime/vmThread.cpp

Print this page
rev 4201 : 8007147: Trace event ExecuteVMOperation may get dangling pointer
Reviewed-by:

@@ -384,11 +384,13 @@
 
     if (event.should_commit()) {
       event.set_operation(op->type());
       event.set_safepoint(op->evaluate_at_safepoint());
       event.set_blocking(!op->evaluate_concurrently());
-      event.set_caller(op->calling_thread()->osthread()->thread_id());
+      // Only write caller thread information for non-concurrent vm operations.
+      // For concurrent vm operations, the caller thread could have exited already.
+      event.set_caller(op->evaluate_concurrently() ? 0 : op->calling_thread()->osthread()->thread_id());
       event.commit();
     }
 
 #ifndef USDT2
     HS_DTRACE_PROBE3(hotspot, vmops__end, op->name(), strlen(op->name()),