Update: I've written a newer/better version of this for .NET 4.5 and open sourced it, see later posts on my blog for more details. This version is legaacy and no longer maintained. In my spare time I've been working on a WinDBG extension containing some useful methods that…
(and more on the exciting world of thread aborts) It logically makes sense, if threads could be aborted while they were inside catch or finally blocks, those constructs would be fairly useless. For example: SafeHandle sh = null; …
There are times when I’ve needed to find the managed thread object backing the native object output in !threads. The way I used to get it was to dump all thread objects (!dumpheap -mt <thread MT>) and match the managed thread Id field with the…
(Part 1 is here) When I left off in Part 1, I had a stack-walker based on IDebug* that could successfully unwind a mixed-mode stack and resolve the native frames to symbols, but the managed sections of the stack were still unresolved. In this post I'll talk about how…
A project I’ve been working on recently is a tool to capture the stack trace of all running threads in a process. The tool is used in response to a monitoring event to gather information about the process at the time of the event firing. Gathering this…