diff --git a/src/node_dtrace.cc b/src/node_dtrace.cc index dfabde0747bdc9..0f33f59b338a85 100644 --- a/src/node_dtrace.cc +++ b/src/node_dtrace.cc @@ -288,7 +288,11 @@ void InitDTrace(Environment* env, Local target) { } #ifdef HAVE_ETW - init_etw(); + // ETW is neither thread-safe nor does it clean up resources on exit, + // so we can use it only on the main thread. + if (env->is_main_thread()) { + init_etw(); + } #endif #if defined HAVE_DTRACE || defined HAVE_ETW