Looking at a crash dump in windbg, I can see that all current threads are stalled at
> ~2k
ChildEBP RetAddr
00d2fcc8 7d4e27dc ntdll_7d600000!ZwWaitForMultipleObjects+0x15
or SingleObject variations of the same.
As a handle to the object to wait on is passed to ZwWaitForMultipleObjects, I assumed that I could work out which object it was using a variation of
!do <address>
with the right address -- but I don't know how to construct the right address. I'm assuming I need some offset from the ChildEBP?
!do
is for managed objects (.NET) but ZwWFMO is most likely waiting on native handles. Use~2kb
to get a well documented Win32 frame further up the stack (hopefully WaitForMultipleObjects) and its first three args. You'll have to deref the second arg to get the handles. When you get the handle values use!handle <handle> f
do get info about a particular handle. Post output to~2kb
if you need help on digging out the handle values. – Koran