{"id":19080426,"url":"https://github.com/seeminglyscience/getclrcallstack","last_synced_at":"2025-04-30T06:10:37.975Z","repository":{"id":87373261,"uuid":"504366945","full_name":"SeeminglyScience/GetClrCallStack","owner":"SeeminglyScience","description":"Get the call stack of every thread in the target process","archived":false,"fork":false,"pushed_at":"2022-06-17T02:31:38.000Z","size":22,"stargazers_count":8,"open_issues_count":4,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-18T21:31:04.026Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SeeminglyScience.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-17T02:20:26.000Z","updated_at":"2024-08-10T17:29:58.000Z","dependencies_parsed_at":"2023-03-27T13:04:20.053Z","dependency_job_id":null,"html_url":"https://github.com/SeeminglyScience/GetClrCallStack","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeeminglyScience%2FGetClrCallStack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeeminglyScience%2FGetClrCallStack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeeminglyScience%2FGetClrCallStack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeeminglyScience%2FGetClrCallStack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SeeminglyScience","download_url":"https://codeload.github.com/SeeminglyScience/GetClrCallStack/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251651231,"owners_count":21621716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T02:23:34.674Z","updated_at":"2025-04-30T06:10:37.970Z","avatar_url":"https://github.com/SeeminglyScience.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eGetClrCallStack\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003csub\u003e\n       Get the call stack of every thread in the target process.\n    \u003c/sub\u003e\n    \u003cbr /\u003e\u003cbr /\u003e\n    \u003ca title=\"Commits\" href=\"https://github.com/SeeminglyScience/GetClrCallStack/commits/master\"\u003e\n        \u003cimg alt=\"Build Status\" src=\"https://github.com/SeeminglyScience/GetClrCallStack/workflows/build/badge.svg\" /\u003e\n    \u003c/a\u003e\n    \u003ca title=\"GetClrCallStack on PowerShell Gallery\" href=\"https://www.powershellgallery.com/packages/GetClrCallStack\"\u003e\n        \u003cimg alt=\"PowerShell Gallery Version (including pre-releases)\" src=\"https://img.shields.io/powershellgallery/v/GetClrCallStack?include_prereleases\u0026label=gallery\"\u003e\n    \u003c/a\u003e\n    \u003ca title=\"LICENSE\" href=\"https://github.com/SeeminglyScience/GetClrCallStack/blob/main/LICENSE\"\u003e\n        \u003cimg alt=\"GitHub\" src=\"https://img.shields.io/github/license/SeeminglyScience/GetClrCallStack\"\u003e\n    \u003c/a\u003e\n\u003c/p\u003e\n\nJust one command that makes it easier for folks to report the status of a process when it appears non-responsive.\n\n**This is not intended to be a supported product and is purely to assist with troubleshooting.**\n\n## Installation\n\n### Gallery\n\n```powershell\nInstall-Module GetClrCallStack -Scope CurrentUser\n```\n\n### PowerShellGet v3\n\n```powershell\nInstall-PSResource GetClrCallStack\n```\n\n### Source\n\n```powershell\ngit clone 'https://github.com/SeeminglyScience/GetClrCallStack.git'\nSet-Location ./GetClrCallStack\n./build.ps1\n```\n\n## Usage\n```powershell\nGet-ClrCallStack 3423\n```\n\n```powershell\n# Technically you can pipe multiple processes, but the output doesn't really account for it.\nGet-Process pwsh |\n    Where-Object Id -ne $PID |\n    Select-Object -First 1 |\n    Get-ClrCallStack\n```\n\n## Example Output\n\n```raw\n    Thread: ConsoleHost main thread\n\nIL     Method\n--     ------\n0x000  System.Threading.WaitHandle.WaitOneCore(IntPtr, Int32)\n0x04C  System.Threading.WaitHandle.WaitOneNoCheck(Int32)\n0x01B  System.Management.Automation.Runspaces.PipelineBase.Invoke(System.Collections.IEnumerable)\n0x000  System.Management.Automation.Runspaces.Pipeline.Invoke()\n0x12C  System.Management.Automation.PowerShell+Worker.ConstructPipelineAndDoWork(System.Management.Automation.Runspaces.Runspace, Boolean)\n0x094  System.Management.Automation.PowerShell+Worker.CreateRunspaceIfNeededAndDoWork(System.Management.Automation.Runspaces.Runspace, Boolean)\n0x0D8  System.Management.Automation.PowerShell.CoreInvokeHelper[[System.__Canon, System.Private.CoreLib],[System.__Canon,\n       System.Private.CoreLib]](System.Management.Automation.PSDataCollection`1\u003cSystem.__Canon\u003e, System.Management.Automation.PSDataCollection`1\u003cSystem.__Canon\u003e,\n       System.Management.Automation.PSInvocationSettings)\n0x1AE  System.Management.Automation.PowerShell.CoreInvoke[[System.__Canon, System.Private.CoreLib],[System.__Canon,\n       System.Private.CoreLib]](System.Management.Automation.PSDataCollection`1\u003cSystem.__Canon\u003e, System.Management.Automation.PSDataCollection`1\u003cSystem.__Canon\u003e,\n       System.Management.Automation.PSInvocationSettings)\n0x043  System.Management.Automation.PowerShell.CoreInvoke[[System.__Canon, System.Private.CoreLib]](System.Collections.IEnumerable,\n       System.Management.Automation.PSDataCollection`1\u003cSystem.__Canon\u003e, System.Management.Automation.PSInvocationSettings)\n0x00B  System.Management.Automation.PowerShell.Invoke(System.Collections.IEnumerable, System.Management.Automation.PSInvocationSettings)\n0x000  System.Management.Automation.PowerShell.Invoke()\n0x06B  Microsoft.PowerShell.ConsoleHostUserInterface.TryInvokeUserDefinedReadLine(System.String ByRef)\n0x037  Microsoft.PowerShell.ConsoleHostUserInterface.ReadLineWithTabCompletion(Microsoft.PowerShell.Executor)\n0x098  Microsoft.PowerShell.ConsoleHost+InputLoop.Run(Boolean)\n0x034  Microsoft.PowerShell.ConsoleHost+InputLoop.RunNewInputLoop(Microsoft.PowerShell.ConsoleHost, Boolean)\n0x040  Microsoft.PowerShell.ConsoleHost.EnterNestedPrompt()\n0x03E  Microsoft.PowerShell.ConsoleHost.DoRunspaceLoop(System.String, Boolean, System.Collections.ObjectModel.Collection`1\u003cSystem.Management.Automation.Runspaces.CommandParameter\u003e, Boolean,\n       System.String)\n0x13D  Microsoft.PowerShell.ConsoleHost.Run(Microsoft.PowerShell.CommandLineParameterParser, Boolean)\n0x2B1  Microsoft.PowerShell.ConsoleHost.Start(System.String, System.String)\n0x03E  Microsoft.PowerShell.UnmanagedPSEntry.Start(System.String[], Int32)\n0x000  Microsoft.PowerShell.ManagedPSEntry.Main(System.String[])\n\n    Thread: .NET ThreadPool Worker\n\nIL     Method\n--     ------\n0x000  Interop+Kernel32.\u003cGetQueuedCompletionStatus\u003eg____PInvoke__|50_0(IntPtr, Int32*, UIntPtr*, IntPtr*, Int32)\n0x000  Interop+Kernel32.\u003cGetQueuedCompletionStatus\u003eg____PInvoke__|50_0(IntPtr, Int32*, UIntPtr*, IntPtr*, Int32)\n0x000  System.Threading.LowLevelLifoSemaphore.WaitForSignal(Int32)\n0x000  System.Threading.LowLevelLifoSemaphore.Wait(Int32, Boolean)\n0x0AE  System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart()\n0x000  \u003cNative Transition\u003e\n\n    Thread: .NET ThreadPool Gate\n\nIL     Method\n--     ------\n0x000  System.Threading.WaitHandle.WaitOneCore(IntPtr, Int32)\n0x000  System.Threading.WaitHandle.WaitOneNoCheck(Int32)\n0x05D  System.Threading.PortableThreadPool+GateThread.GateThreadStart()\n0x000  \u003cNative Transition\u003e\n\n    Thread: .NET Long Running Task\n\nIL     Method\n--     ------\n0x000  System.Threading.WaitHandle.WaitOneCore(IntPtr, Int32)\n0x000  System.Threading.WaitHandle.WaitOneNoCheck(Int32)\n0x000  System.Threading.WaitHandle.WaitOne(System.TimeSpan)\n0x026  Microsoft.ApplicationInsights.Channel.InMemoryTransmitter.Runner()\n0x040  System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)\n0x096  System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread)\n0x000  \u003cNative Transition\u003e\n\n    Thread: DefaultAggregationPeriodCycle\n\nIL     Method\n--     ------\n0x000  System.Threading.Thread.SleepInternal(Int32)\n0x01A  System.Threading.Thread.Sleep(Int32)\n0x000  System.Threading.Thread.Sleep(System.TimeSpan)\n0x013  Microsoft.ApplicationInsights.Metrics.DefaultAggregationPeriodCycle.Run()\n0x040  System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)\n0x000  \u003cNative Transition\u003e\n\n    Thread: IPC Listener Thread\n\nIL     Method\n--     ------\n0x000  System.Threading.Monitor.ObjWait(Int32, System.Object)\n0x106  System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken)\n0x034  System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken)\n0x07C  System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken)\n0x008  System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task)\n0x027  System.IO.Pipes.NamedPipeServerStream.WaitForConnection()\n0x000  System.Management.Automation.Remoting.RemoteSessionNamedPipeServer.WaitForConnection()\n0x077  System.Management.Automation.Remoting.RemoteSessionNamedPipeServer.ProcessListeningThread(System.Object)\n0x040  System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)\n0x000  \u003cNative Transition\u003e\n\n    Thread: .NET ThreadPool Worker\n\nIL     Method\n--     ------\n0x000  Interop+Kernel32.\u003cGetQueuedCompletionStatus\u003eg____PInvoke__|50_0(IntPtr, Int32*, UIntPtr*, IntPtr*, Int32)\n0x000  Interop+Kernel32.\u003cGetQueuedCompletionStatus\u003eg____PInvoke__|50_0(IntPtr, Int32*, UIntPtr*, IntPtr*, Int32)\n0x000  System.Threading.LowLevelLifoSemaphore.WaitForSignal(Int32)\n0x000  System.Threading.LowLevelLifoSemaphore.Wait(Int32, Boolean)\n0x0AE  System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart()\n0x000  \u003cNative Transition\u003e\n\n    Thread: Pipeline Execution Thread\n\nIL     Method\n--     ------\n0x000  System.Threading.WaitHandle.WaitMultipleIgnoringSyncContext(IntPtr*, Int32, Boolean, Int32)\n0x000  System.Threading.WaitHandle.WaitMultiple(System.ReadOnlySpan`1\u003cSystem.Threading.WaitHandle\u003e, Boolean, Int32)\n0x000  System.Threading.WaitHandle.WaitAny(System.Threading.WaitHandle[], Int32)\n0x012  Microsoft.PowerShell.PSConsoleReadLine.ReadKey()\n0x04C  Microsoft.PowerShell.PSConsoleReadLine.InputLoop()\n0x0AC  Microsoft.PowerShell.PSConsoleReadLine.ReadLine(System.Management.Automation.Runspaces.Runspace, System.Management.Automation.EngineIntrinsics, System.Threading.CancellationToken,\n       System.Nullable`1\u003cBoolean\u003e)\n0x000  Microsoft.PowerShell.PSConsoleReadLine.ReadLine(System.Management.Automation.Runspaces.Runspace, System.Management.Automation.EngineIntrinsics, System.Nullable`1\u003cBoolean\u003e)\n0x000  DynamicClass.CallSite.Target(System.Runtime.CompilerServices.Closure, System.Runtime.CompilerServices.CallSite, System.Type, System.Object, System.Object, System.Object)\n0x136  System.Dynamic.UpdateDelegates.UpdateAndExecute4[[System.__Canon, System.Private.CoreLib],[System.__Canon, System.Private.CoreLib],[System.__Canon,\n       System.Private.CoreLib],[System.__Canon, System.Private.CoreLib],[System.__Canon, System.Private.CoreLib]](System.Runtime.CompilerServices.CallSite, System.__Canon, System.__Canon,\n       System.__Canon, System.__Canon)\n0x000\n0x000  System.Management.Automation.Interpreter.DynamicInstruction`5[[System.__Canon, System.Private.CoreLib],[System.__Canon, System.Private.CoreLib],[System.__Canon,\n       System.Private.CoreLib],[System.__Canon, System.Private.CoreLib],[System.__Canon, System.Private.CoreLib]].Run(System.Management.Automation.Interpreter.InterpretedFrame)\n0x043  System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(System.Management.Automation.Interpreter.InterpretedFrame)\n0x043  System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(System.Management.Automation.Interpreter.InterpretedFrame)\n0x015  System.Management.Automation.Interpreter.Interpreter.Run(System.Management.Automation.Interpreter.InterpretedFrame)\n0x03E  System.Management.Automation.Interpreter.LightLambda.RunVoid1[[System.__Canon, System.Private.CoreLib]](System.__Canon)\n0x240  System.Management.Automation.DlrScriptCommandProcessor.RunClause(System.Action`1\u003cSystem.Management.Automation.Language.FunctionContext\u003e, System.Object, System.Object)\n0x094  System.Management.Automation.DlrScriptCommandProcessor.Complete()\n0x055  System.Management.Automation.CommandProcessorBase.DoComplete()\n0x03B  System.Management.Automation.Internal.PipelineProcessor.DoCompleteCore(System.Management.Automation.CommandProcessorBase)\n0x08D  System.Management.Automation.Internal.PipelineProcessor.SynchronousExecuteEnumerate(System.Object)\n0x2C1  System.Management.Automation.Runspaces.LocalPipeline.InvokeHelper()\n0x09B  System.Management.Automation.Runspaces.LocalPipeline.InvokeThreadProc()\n0x025  System.Management.Automation.Runspaces.LocalPipeline.InvokeThreadProcImpersonate()\n0x016  System.Management.Automation.Runspaces.PipelineThread.WorkerProc()\n0x040  System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)\n0x000  \u003cNative Transition\u003e\n\n    Thread: PSReadLine ReadKey Thread\n\nIL     Method\n--     ------\n0x000  \u003cNative Transition\u003e\n0x01F  Interop+Kernel32.ReadConsoleInput(IntPtr, InputRecord ByRef, Int32, Int32 ByRef)\n0x071  System.ConsolePal.ReadKey(Boolean)\n0x000  Microsoft.PowerShell.Internal.VirtualTerminal.ReadKey()\n0x0C0  Microsoft.PowerShell.PSConsoleReadLine.ReadOneOrMoreKeys()\n0x01D  Microsoft.PowerShell.PSConsoleReadLine.ReadKeyThreadProc()\n0x040  System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)\n0x000  \u003cNative Transition\u003e\n\n    Thread: .NET ThreadPool Worker\n\nIL     Method\n--     ------\n0x000  Interop+Kernel32.\u003cGetQueuedCompletionStatus\u003eg____PInvoke__|50_0(IntPtr, Int32*, UIntPtr*, IntPtr*, Int32)\n0x000  Interop+Kernel32.\u003cGetQueuedCompletionStatus\u003eg____PInvoke__|50_0(IntPtr, Int32*, UIntPtr*, IntPtr*, Int32)\n0x000  System.Threading.LowLevelLifoSemaphore.WaitForSignal(Int32)\n0x000  System.Threading.LowLevelLifoSemaphore.Wait(Int32, Boolean)\n0x0AE  System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart()\n0x000  \u003cNative Transition\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseeminglyscience%2Fgetclrcallstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseeminglyscience%2Fgetclrcallstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseeminglyscience%2Fgetclrcallstack/lists"}