If broken it is, fix it you should

Using the powers of the debugger to solve the problems of the world - and a bag of chips    by Tess Ferrandez, ASP.NET Escalation Engineer (Microsoft)

"Failed to start stack walk: 80004005", "Following frames may be wrong" and other errors you may see in windbg

"Failed to start stack walk: 80004005", "Following frames may be wrong" and other errors you may see in windbg

  • Comments 24

When you debug .net applications you will sometimes get error messages in windbg.  Here are a few of the ones I most commonly get questions around...

 

Failed to start stack walk

If you run the sos command !clrstack to display the .net stack on a thread, and this thread is a .net thread but it is not currently running any .net code, sos will spit out Failed to start stack walk: 80004005.  This does not mean that there is anything wrong with the process or with the debugger. It simply means that sos can't display the stack because there is none.

OS Thread Id: 0x1ec (12)
Failed to start stack walk: 80004005

 

Unable to walk the managed stack

If you run !clrstack on a native thread (i.e. a thread that has no corresponding System.Threading.Thread), sos will display the following message instead.

OS Thread Id: 0x554 (11)
Unable to walk the managed stack. The current thread is likely not a 
managed thread. You can run !threads to get a list of managed threads in
the process

Following frames may be wrong

If windbg can't resolve a symbol it will give an ERROR the first time it encounters this symbol telling you that the symbol file could not be found, and all subsequent times it encounters this symbols it will give you a WARNING, telling you that it can't unwind the stack properly.  When you see this message it means that anything you see below the WARNING note may be incorrect so you can't trust the stack from there on.  In this case for example we can see that the stack is waiting to enter a critical section, and that some method in DataLayer.dll is trying to enter a critical section, however because we don't have proper symbols for DataLayer.dll we can not say if it is the method DllUnregisterServer or not.  In fact most likely DllUnregisterServer is just the last exported symbol name, otherwise we would be at an offset of 0x43fb which means that this method would be very very long.

Not only do we not know if this is the right method name or not, but windbg may even loose stack frames when it doesn't have the proper symbols so you really shouldn't trust this stack at all...

For a discussion on symbols, how they work etc. see this post

0:018> kL
ChildEBP RetAddr  
020eea58 77f8f295 NTDLL!NtWaitForSingleObject+0xb
020eeacc 77f87f26 NTDLL!RtlpWaitForCriticalSection+0x9e
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for DataLayer.dll - 
020eead4 6010f8b2 NTDLL!RtlEnterCriticalSection+0x46
WARNING: Stack unwind information not available. Following frames may be wrong.
020eeae4 6012e72b DataLayer!DllUnregisterServer+0x43fb
...

Failed to load data access DLL, 0x80004005

This error means that a) you are loading the wrong version of sos.dll, i.e. in this case I loaded the 2.0 version in a 1.1 dump, or b) it can't find the proper version of mscordacwks.dll.  If it is option b, try turning on !sym noisy  and run .cordll -ve -u -l.  And of course, as the error message mentions,  make sure that you have a full dump rather than a mini dump.  Check out this post for some basics on memory dumps.

0:167> !clrstack
Doesn't work with 1.x
Failed to load data access DLL, 0x80004005
Verify that 1) you have a recent build of the debugger (6.2.14 or newer)
            2) the file mscordacwks.dll that matches your version of mscorwks.dll is 
                in the version directory
            3) or, if you are debugging a dump file, verify that the file 
                mscordacwks___.dll is on your symbol path.
            4) you are debugging on the same architecture as the dump file.
                For example, an IA64 dump file must be debugged on an IA64
                machine.

You can also run the debugger command .cordll to control the debugger's
load of mscordacwks.dll.  .cordll -ve -u -l will do a verbose reload.
If that succeeds, the SOS command should work on retry.

If you are debugging a minidump, you need to make sure that your executable
path is pointing to mscorwks.dll as well.

 

Laters,

Tess

  • Thanks, that was helpful information....

  • Dear Tess,

    Please could you reduce the width of lines in your posts? It is difficult to skim your posts in RSSBandit because of that short horizontal bar taking a mile or so :( I cannot simply roll my mouse down to skim.

    http://blogs.msdn.com/tess/rss.xml is too wide to fit in the normal outlook standard-width reading pane.

    Cheers.

  • I will do my best... is it the debug output or everything?  Does the text not wrap?

  • everything. the text too doesn't wrap.

  • Hi Narasimha,

    I just downloaded RSS Bandit and subscribed to my feed.

    In my copy of RSS bandit it seems to be word wrapping properly.  I have resized the viewer and the word wrap seems to follow, so I am not sure what the difference is there.  I tried it on 3 different machines here and got the same results.  Are you just seeing this issue with my feed?  

    I have compared HTML with other blogs and they don't seem to put extra <br/> at the end of lines which is what i would have to do to manually word wrap.  I would prefer not to do so as it will make things look weird in other readers.

  • Tess,

    In RSS bandit, I've configured it to show list of your posts on top and view on bottom. I hope you have similar way.

    If I see individual post of yours it is ok. What I'm talking about is seeing list of posts' view. Click on the link in "My Feeds" on the left pane. Right side top view shows list of all your posts. Bottom view shows these posts which I can scroll down one by one. In this view is what I face this problem. Btw, other authors on MSDN seems ok. Though some of them have horz. bar.

    For best result benchmark see Vista Team blog: http://windowsvistablog.com/blogs/default.aspx

    Their posts appear nicely wrapped.

  • hey Tess, also see Roberto Farah's http://blogs.msdn.com/debuggingtoolbox/default.aspx

    they too appear without horz. bar. :) Btw, in this view RSSBandit only shows those posts which are still unread.

  • I did some comparison with other authors: I think they explicitly enter a new line (\r\n) in the html code wrapped in <p></p>, while your text is one single long line inside <p></p>

  • I had a look at home with some different feeds in RSSBandit and it looks like half of them have one behavior and half have the other behavior.

    When I view mine it doesnt word wrap if I resize the window to be smaller than the screen width, if i maximize it it works fine.  So it seems like some feeds just have a smaller width than others and I can't say why that is, but im guessing it has something to do with the theme used.

    Based on the feeds that have wordwrap even when resized I can say that the source reveals that they do not do anything special as far as breaking lines etc.  so I am not really sure what to do to make it show up properly in RSS bandit when resized.  I'm sorry:(

  • Hi Tess,

    taking your cue, I changed my xsl format to "kuro5hin" template for your posts and voila! your text fits. :)

    Thanks anyway. Cheers.

  • awesome, thanks for the tip.  I'll add that too to my RSS Bandit.

    I use on-line RSS readers because I want it to be portable so i can keep read/unread posts anywhere i go, but after seeing this reader I am almost thinking about converting.

  • Tess, it is my due to give you a big thanks for this very useful blog. I learned a lot from here.

    Allow me to buy you cup of coffee, 'heap' of chips and a sandwich with few megabytes of free stack trace, thinly cut ham and topped with mayonnaise SOS.

  • :)  funny, thanks Narashima

  • Ever seen this error in a WinDBG/CDB debug session? Failed to load data access DLL, 0x80004005 Verify

  • Thanks Tess for all your posts.

    Failed to load data access DLL, 0x80004005

    This can also happen in !VerifyHeap.

    My solution:

    1. unload SOS (.unload SOS), because wrong version is loaded

    2. load modules (ld *)

    3. load SOS (.loadby sos mscorwks), should load the correct version now

    4. !VerifyHeap

Page 1 of 2 (24 items) 12
Leave a Comment
  • Please add 4 and 2 and type the answer here:
  • Post