From 2e4853413a37063ebaa9b433e104e3ce5ced0ff5 Mon Sep 17 00:00:00 2001 From: Stewart X Addison Date: Tue, 6 Jan 2026 15:49:25 +0000 Subject: [PATCH 1/3] src: use node- prefix on thread names --- src/inspector_agent.cc | 2 +- src/inspector_io.cc | 2 +- src/node.cc | 2 +- src/node_platform.cc | 4 ++-- src/node_watchdog.cc | 4 ++-- src/tracing/agent.cc | 2 +- test/addons/uv-thread-name/test.js | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc index f62eb36b57542a..3d205fac8eb438 100644 --- a/src/inspector_agent.cc +++ b/src/inspector_agent.cc @@ -84,7 +84,7 @@ static void StartIoThreadWakeup(int signo, siginfo_t* info, void* ucontext) { } inline void* StartIoThreadMain(void* unused) { - uv_thread_setname("SignalInspector"); + uv_thread_setname("node-SignalInspector"); for (;;) { uv_sem_wait(&start_io_thread_semaphore); Mutex::ScopedLock lock(start_io_thread_async_mutex); diff --git a/src/inspector_io.cc b/src/inspector_io.cc index 361d19349261e5..1a590fdc5dbb4e 100644 --- a/src/inspector_io.cc +++ b/src/inspector_io.cc @@ -286,7 +286,7 @@ void InspectorIo::ThreadMain(void* io) { } void InspectorIo::ThreadMain() { - int thread_name_error = uv_thread_setname("InspectorIo"); + int thread_name_error = uv_thread_setname("node-InspectorIo"); if (!thread_name_error) [[unlikely]] { per_process::Debug(node::DebugCategory::INSPECTOR_SERVER, "Failed to set thread name for Inspector\n"); diff --git a/src/node.cc b/src/node.cc index 8367227dd56ed4..39505548c45891 100644 --- a/src/node.cc +++ b/src/node.cc @@ -1234,7 +1234,7 @@ InitializeOncePerProcessInternal(const std::vector& args, } if (!(flags & ProcessInitializationFlags::kNoInitializeNodeV8Platform)) { - uv_thread_setname("MainThread"); + uv_thread_setname("node-MainThread"); per_process::v8_platform.Initialize( static_cast(per_process::cli_options->v8_thread_pool_size)); result->platform_ = per_process::v8_platform.Platform(); diff --git a/src/node_platform.cc b/src/node_platform.cc index 4815e8acd99c2f..9a3a20a3821b4d 100644 --- a/src/node_platform.cc +++ b/src/node_platform.cc @@ -49,7 +49,7 @@ static void PrintSourceLocation(const v8::SourceLocation& location) { } static void PlatformWorkerThread(void* data) { - uv_thread_setname("V8Worker"); + uv_thread_setname("node-V8Worker"); std::unique_ptr worker_data(static_cast(data)); @@ -101,7 +101,7 @@ class WorkerThreadsTaskRunner::DelayedTaskScheduler { std::unique_ptr Start() { auto start_thread = [](void* data) { - uv_thread_setname("DelayedTaskSchedulerWorker"); + uv_thread_setname("node-DelayedTaskSchedulerWorker"); static_cast(data)->Run(); }; std::unique_ptr t { new uv_thread_t() }; diff --git a/src/node_watchdog.cc b/src/node_watchdog.cc index f9bfa0e0c86f94..51d638f3688ca8 100644 --- a/src/node_watchdog.cc +++ b/src/node_watchdog.cc @@ -80,7 +80,7 @@ Watchdog::~Watchdog() { void Watchdog::Run(void* arg) { - uv_thread_setname("Watchdog"); + uv_thread_setname("node-Watchdog"); Watchdog* wd = static_cast(arg); // UV_RUN_DEFAULT the loop will be stopped either by the async or the @@ -230,7 +230,7 @@ void TraceSigintWatchdog::HandleInterrupt() { #ifdef __POSIX__ void* SigintWatchdogHelper::RunSigintWatchdog(void* arg) { - uv_thread_setname("SigintWatchdog"); + uv_thread_setname("node-SigintWatchdog"); // Inside the helper thread. bool is_stopping; do { diff --git a/src/tracing/agent.cc b/src/tracing/agent.cc index eddcf6c3bf91b7..e960b749b288a4 100644 --- a/src/tracing/agent.cc +++ b/src/tracing/agent.cc @@ -98,7 +98,7 @@ void Agent::Start() { uv_thread_create( &thread_, [](void* arg) { - uv_thread_setname("TraceEventWorker"); + uv_thread_setname("node-TraceEventWorker"); Agent* agent = static_cast(arg); uv_run(&agent->tracing_loop_, UV_RUN_DEFAULT); }, diff --git a/test/addons/uv-thread-name/test.js b/test/addons/uv-thread-name/test.js index e5e2b949502d37..406071014f74ba 100644 --- a/test/addons/uv-thread-name/test.js +++ b/test/addons/uv-thread-name/test.js @@ -12,11 +12,11 @@ const bindingPath = require.resolve(`./build/${common.buildType}/binding`); const binding = require(bindingPath); if (isMainThread) { - assert.strictEqual(binding.getThreadName(), 'MainThread'); + assert.strictEqual(binding.getThreadName(), 'node-MainThread'); const worker = new Worker(__filename); worker.on('message', common.mustCall((data) => { - assert.strictEqual(data, 'WorkerThread'); + assert.strictEqual(data, 'node-WorkerThread'); })); worker.on('error', common.mustNotCall()); worker.on('exit', common.mustCall((code) => { From d340196e9653335bbcebefebcc162dc822182692 Mon Sep 17 00:00:00 2001 From: Stewart X Addison Date: Wed, 7 Jan 2026 15:55:15 +0000 Subject: [PATCH 2/3] src: avoid renaming WorkerThread Signed-off-by: Stewart X Addison --- test/addons/uv-thread-name/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/addons/uv-thread-name/test.js b/test/addons/uv-thread-name/test.js index 406071014f74ba..be92fc2ab5dbf6 100644 --- a/test/addons/uv-thread-name/test.js +++ b/test/addons/uv-thread-name/test.js @@ -16,7 +16,7 @@ if (isMainThread) { const worker = new Worker(__filename); worker.on('message', common.mustCall((data) => { - assert.strictEqual(data, 'node-WorkerThread'); + assert.strictEqual(data, 'WorkerThread'); })); worker.on('error', common.mustNotCall()); worker.on('exit', common.mustCall((code) => { From c0fe99d357b04f1999e31950849babb0f3347632 Mon Sep 17 00:00:00 2001 From: Stewart X Addison Date: Wed, 7 Jan 2026 16:56:49 +0000 Subject: [PATCH 3/3] src: revert some thread names to fit in Linux' 15 char limit Signed-off-by: Stewart X Addison --- src/inspector_agent.cc | 2 +- src/inspector_io.cc | 2 +- src/node_platform.cc | 2 +- src/node_watchdog.cc | 4 ++-- src/tracing/agent.cc | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc index 3d205fac8eb438..f62eb36b57542a 100644 --- a/src/inspector_agent.cc +++ b/src/inspector_agent.cc @@ -84,7 +84,7 @@ static void StartIoThreadWakeup(int signo, siginfo_t* info, void* ucontext) { } inline void* StartIoThreadMain(void* unused) { - uv_thread_setname("node-SignalInspector"); + uv_thread_setname("SignalInspector"); for (;;) { uv_sem_wait(&start_io_thread_semaphore); Mutex::ScopedLock lock(start_io_thread_async_mutex); diff --git a/src/inspector_io.cc b/src/inspector_io.cc index 1a590fdc5dbb4e..361d19349261e5 100644 --- a/src/inspector_io.cc +++ b/src/inspector_io.cc @@ -286,7 +286,7 @@ void InspectorIo::ThreadMain(void* io) { } void InspectorIo::ThreadMain() { - int thread_name_error = uv_thread_setname("node-InspectorIo"); + int thread_name_error = uv_thread_setname("InspectorIo"); if (!thread_name_error) [[unlikely]] { per_process::Debug(node::DebugCategory::INSPECTOR_SERVER, "Failed to set thread name for Inspector\n"); diff --git a/src/node_platform.cc b/src/node_platform.cc index 9a3a20a3821b4d..197102068b74f4 100644 --- a/src/node_platform.cc +++ b/src/node_platform.cc @@ -101,7 +101,7 @@ class WorkerThreadsTaskRunner::DelayedTaskScheduler { std::unique_ptr Start() { auto start_thread = [](void* data) { - uv_thread_setname("node-DelayedTaskSchedulerWorker"); + uv_thread_setname("DelayedTaskSchedulerWorker"); static_cast(data)->Run(); }; std::unique_ptr t { new uv_thread_t() }; diff --git a/src/node_watchdog.cc b/src/node_watchdog.cc index 51d638f3688ca8..f9bfa0e0c86f94 100644 --- a/src/node_watchdog.cc +++ b/src/node_watchdog.cc @@ -80,7 +80,7 @@ Watchdog::~Watchdog() { void Watchdog::Run(void* arg) { - uv_thread_setname("node-Watchdog"); + uv_thread_setname("Watchdog"); Watchdog* wd = static_cast(arg); // UV_RUN_DEFAULT the loop will be stopped either by the async or the @@ -230,7 +230,7 @@ void TraceSigintWatchdog::HandleInterrupt() { #ifdef __POSIX__ void* SigintWatchdogHelper::RunSigintWatchdog(void* arg) { - uv_thread_setname("node-SigintWatchdog"); + uv_thread_setname("SigintWatchdog"); // Inside the helper thread. bool is_stopping; do { diff --git a/src/tracing/agent.cc b/src/tracing/agent.cc index e960b749b288a4..eddcf6c3bf91b7 100644 --- a/src/tracing/agent.cc +++ b/src/tracing/agent.cc @@ -98,7 +98,7 @@ void Agent::Start() { uv_thread_create( &thread_, [](void* arg) { - uv_thread_setname("node-TraceEventWorker"); + uv_thread_setname("TraceEventWorker"); Agent* agent = static_cast(arg); uv_run(&agent->tracing_loop_, UV_RUN_DEFAULT); },