views:

58

answers:

1

Hi All,

I will start by saying this is the first time I have done anything with WinDbg so excuse my silly mistakes if that is the issue. My website has been using a lot of memory and after reading blogs and watching videos by Tess Fernandez I am trying to use WinDBG to analyze my dump file.

The setup: My web server is a Windows 2008 64bit machine running my asp.net 2.0 website in 32 bit compatablity mode. I have set an environment variable to get all the symbols so I don't get errors when I load WinDbg

I am using the following commands in WinDbg:

.load C:\Windows\Microsoft.NET\Framework64\v2.0.50727\sos.dll
.load C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll
!eeheap -gc

and getting the following error:

The garbage collector data structures are not in a valid state for traversal. It is either in the "plan phase," where objects are being moved around, or we are at the initialization or shutdown of the gc heap. Commands related to displaying, finding or traversing objects as well as gc heap segments may not work properly. !dumpheap and !verifyheap may incorrectly complain of heap consistency errors. Number of GC Heaps: 1 Error requesting details

I have read this can be caused by some version mismatch and I think that could be the issue. In order to get this far, I have had to create the path

C:\Windows\Symbols\mscordacwks_AMD64_x86_2.0.50727.4016.dll\49CC5B00590000\mscordacwks_AMD64_x86_2.0.50727.4016.dll

so the libraries are loaded when I call !eeheap -gc (otherwise some other errors come out). The problem is that I have taken this mscordacwks.dll from the normal .NET folder and not the Framework64 one. I don't know if this is the cause of the issue but I have been banging my head against a brick wall and don't really know what else to do so I would appreciate some help.

Many thanks.

A: 

Take a look at this post. Also, make sure you're using the debugger and sos with the same bitness as the dump. The linked blog in the post explains this. So in your case, use the 64bit windbg, load the sos.dll from Framework64, and make sure your mscordacwks is "mscordacwks_amd64_amd64_2.0.50727.4016.dll" and is in a path that is accessible. I like to copy this assembly and the matching sos.dll into it's own folder together, but YMMV.

nithins
I think that answers what I need to know. Thanks.
webnoob