From f8d156b65ee81b87bd996b4b48db9e637634b3a0 Mon Sep 17 00:00:00 2001 From: Grisha Kotler Date: Wed, 3 May 2023 01:49:57 +0300 Subject: [PATCH] dotnet-stack: Fix parsing of thread names (#3860) --- src/Tools/dotnet-stack/ReportCommand.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Tools/dotnet-stack/ReportCommand.cs b/src/Tools/dotnet-stack/ReportCommand.cs index 324c29953..76ca818ea 100644 --- a/src/Tools/dotnet-stack/ReportCommand.cs +++ b/src/Tools/dotnet-stack/ReportCommand.cs @@ -121,7 +121,11 @@ namespace Microsoft.Diagnostics.Tools.Stack // Thread id is in the frame name as "Thread ()" string template = "Thread ("; string threadFrame = stackSource.GetFrameName(stackSource.GetFrameIndex(stackIndex), false); - int threadId = int.Parse(threadFrame.Substring(template.Length, threadFrame.Length - (template.Length + 1))); + + // we are looking for the first index of ) because + // we need to handle a thread name like: Thread (4008) (.NET IO ThreadPool Worker) + int firstIndex = threadFrame.IndexOf(')'); + int threadId = int.Parse(threadFrame.AsSpan(template.Length, firstIndex - template.Length)); if (samplesForThread.TryGetValue(threadId, out List samples)) { -- 2.34.1