C
Cheung, Jeffrey Jing-Yen
Hi all,
I need some help with debugging a "deadlock" in a production
environment. I've managed to get a crash dump and have tried to
analyzed it via WinDbg and SOS. Unfortunately, I am not skilled enough
in debugging to pinpoint the exact problem; however, I have narrowed it
down to the garbage collection process. All threads seem to be waiting
for the GC to complete; when the process hangs, ASPNET_WP.EXE is taking
up 100% cpu.
Can someone suggest what methods I could use to fully show and pinpoint
where the GC is locking up? I have briefly skimmed the SOS docs and a
lot of the exposed functions seem useful; however, I can't really make
heads or tails out of them. I've examined the heap via !dumpheap -stat,
and the largest object that comes back is a whopping 22 MB System.String
object. In the MSDN docs, what is supposed to follow is a listing of
Large Objects; however, I figure that maybe because I am using the 1.1
framework, large objects aren't really differentiated any differently.
I managed to get the address by issuing a dumpheap -mt <mt of the
System.String> and I got a huge listing of addresses that really don't
make much sense to me. I certainly don't want to issue an !objsize
<addr> on each of these (there are over 30k addresses).
I think my biggest concern is that I want to be able to load the symbols
of the .NET assemblies that are being used so that I can analyze the
managed stack thoroughly, yet I'm not too certain how to do this. If
that's not necessary to find out the core problem, then I guess I need
to be directed towards the right place.
Thanks in advance everyone,
Jeff Cheung
I need some help with debugging a "deadlock" in a production
environment. I've managed to get a crash dump and have tried to
analyzed it via WinDbg and SOS. Unfortunately, I am not skilled enough
in debugging to pinpoint the exact problem; however, I have narrowed it
down to the garbage collection process. All threads seem to be waiting
for the GC to complete; when the process hangs, ASPNET_WP.EXE is taking
up 100% cpu.
Can someone suggest what methods I could use to fully show and pinpoint
where the GC is locking up? I have briefly skimmed the SOS docs and a
lot of the exposed functions seem useful; however, I can't really make
heads or tails out of them. I've examined the heap via !dumpheap -stat,
and the largest object that comes back is a whopping 22 MB System.String
object. In the MSDN docs, what is supposed to follow is a listing of
Large Objects; however, I figure that maybe because I am using the 1.1
framework, large objects aren't really differentiated any differently.
I managed to get the address by issuing a dumpheap -mt <mt of the
System.String> and I got a huge listing of addresses that really don't
make much sense to me. I certainly don't want to issue an !objsize
<addr> on each of these (there are over 30k addresses).
I think my biggest concern is that I want to be able to load the symbols
of the .NET assemblies that are being used so that I can analyze the
managed stack thoroughly, yet I'm not too certain how to do this. If
that's not necessary to find out the core problem, then I guess I need
to be directed towards the right place.
Thanks in advance everyone,
Jeff Cheung