From 34c57238275115085e9aebaaf96ed51322feac68 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 15:32:40 +0000 Subject: [PATCH 1/4] Initial plan From e64564d2b16493705bb522885c5dd8b989953607 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 15:41:41 +0000 Subject: [PATCH 2/4] Add descriptive names to RequestBuilder task scheduler threads Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com> --- src/Build/BackEnd/Components/RequestBuilder/RequestBuilder.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Build/BackEnd/Components/RequestBuilder/RequestBuilder.cs b/src/Build/BackEnd/Components/RequestBuilder/RequestBuilder.cs index d99df97edb7..a2c90cb9168 100644 --- a/src/Build/BackEnd/Components/RequestBuilder/RequestBuilder.cs +++ b/src/Build/BackEnd/Components/RequestBuilder/RequestBuilder.cs @@ -1503,6 +1503,7 @@ private sealed class DedicatedThreadsTaskScheduler : TaskScheduler { private readonly BlockingCollection _tasks = new BlockingCollection(); private int _availableThreads = 0; + private int _threadCount = 0; protected override void QueueTask(Task task) { @@ -1538,6 +1539,7 @@ private void RequestThread() private void InjectThread() { + int threadId = Interlocked.Increment(ref _threadCount); var thread = new Thread(() => { foreach (Task t in _tasks.GetConsumingEnumerable()) @@ -1547,6 +1549,7 @@ private void InjectThread() } }); thread.IsBackground = true; + thread.Name = $"MSBuild RequestBuilder Task Scheduler Thread {threadId}"; thread.Start(); } } From 1a1c53a0486eab67ac429f492740085561ebea11 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 15:47:14 +0000 Subject: [PATCH 3/4] Address code review feedback - improve variable naming Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com> --- src/Build/BackEnd/Components/RequestBuilder/RequestBuilder.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Build/BackEnd/Components/RequestBuilder/RequestBuilder.cs b/src/Build/BackEnd/Components/RequestBuilder/RequestBuilder.cs index a2c90cb9168..7aa5a8bfec2 100644 --- a/src/Build/BackEnd/Components/RequestBuilder/RequestBuilder.cs +++ b/src/Build/BackEnd/Components/RequestBuilder/RequestBuilder.cs @@ -1539,7 +1539,7 @@ private void RequestThread() private void InjectThread() { - int threadId = Interlocked.Increment(ref _threadCount); + int currentThreadId = Interlocked.Increment(ref _threadCount); var thread = new Thread(() => { foreach (Task t in _tasks.GetConsumingEnumerable()) @@ -1549,7 +1549,7 @@ private void InjectThread() } }); thread.IsBackground = true; - thread.Name = $"MSBuild RequestBuilder Task Scheduler Thread {threadId}"; + thread.Name = $"MSBuild RequestBuilder Task Scheduler Thread {currentThreadId}"; thread.Start(); } } From a8e1b1d9464363a8ee936816ab6bef48b9bdddba Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 5 Dec 2025 15:52:24 +0000 Subject: [PATCH 4/4] Add descriptive names to STA task scheduler threads in AwaitExtensions Co-authored-by: JanProvaznik <25267098+JanProvaznik@users.noreply.github.com> --- src/Shared/AwaitExtensions.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Shared/AwaitExtensions.cs b/src/Shared/AwaitExtensions.cs index ac79035ce3f..b80a1e0106c 100644 --- a/src/Shared/AwaitExtensions.cs +++ b/src/Shared/AwaitExtensions.cs @@ -157,6 +157,11 @@ private class OneSTAThreadPerTaskScheduler : TaskScheduler /// private readonly ConcurrentQueue _queuedTasks = new ConcurrentQueue(); + /// + /// Counter for generating unique thread IDs. + /// + private int _threadCount = 0; + /// /// Returns the list of queued tasks. /// @@ -172,6 +177,7 @@ protected override void QueueTask(Task task) { _queuedTasks.Enqueue(task); + int currentThreadId = Interlocked.Increment(ref _threadCount); ParameterizedThreadStart threadStart = new ParameterizedThreadStart((_) => { Task t; @@ -182,6 +188,7 @@ protected override void QueueTask(Task task) }); Thread thread = new Thread(threadStart); + thread.Name = $"MSBuild STA Task Scheduler Thread {currentThreadId}"; #if FEATURE_APARTMENT_STATE thread.SetApartmentState(ApartmentState.STA); #endif