WinDbg, with a mini-drive from a 32-bit 32-bit application, crashing on 64-bit Windows, will not load characters for system dlls

I have a minidump file due to a crash in one of our applications. This is a 32-bit native application, and it was running on 64-bit Windows.

If I load the minidump file in WinDbg, WinDbg will not load characters for system DLLs. I have my character paths configured correctly:

_NT_SYMBOL_PATH=SRV*C:\WebSymbols*http://msdl.microsoft.com/download/symbols 

... because WinDbg correctly loads characters for mini-disks created on 32-bit Windows. It simply will not load the symbols for the DLL into the SysWOW64 directory.

I tried 32-bit WinDbg (from Debugging Tools 6.9) on 32-bit Windows 2003 and 64-bit WinDbg (also from Debugging Tools 6.9) on 64-bit Windows 2008. Both do not load characters. This is from 32-bit WinDbg:

  0: 014>! Sym noisy
 noisy mode - symbol prompts on
 0: 014> .reload
 .................................................. ..................................
 Loading unloaded module list
 ..
 SYMSRV: C: \ WebSymbols \ ntdll.dll \ 48E714D0170000 \ ntdll.dll not found
 SYMSRV: http://msdl.microsoft.com/download/symbols/ntdll.dll/48E714D0170000/ntdll.dll not found
 DBGENG: C: \ Windows \ SysWOW64 \ ntdll.dll - Couldn't map image from disk.
 Unable to load image C: \ Windows \ SysWOW64 \ ntdll.dll, Win32 error 0n2
 DBGENG: ntdll.dll - Partial symbol image load missing image info
 DBGHELP: Module is not fully loaded into memory.
 DBGHELP: Searching for symbols using debugger-provided data.
 SYMSRV: C: \ WebSymbols \ wntdll.pdb \ 6686D0C5D0554E14953396093DA218A92 \ wntdll.pdb not found
 SYMSRV: http://msdl.microsoft.com/download/symbols/wntdll.pdb/6686D0C5D0554E14953396093DA218A92/wntdll.pdb not found
 DBGHELP: wntdll.pdb - file not found
 *** WARNING: Unable to verify timestamp for ntdll.dll
 *** ERROR: Module load completed but symbols could not be loaded for ntdll.dll
 DBGHELP: ntdll - no symbols loaded
 SYMSRV: C: \ WebSymbols \ kernel32.dll \ 48E7156Cf0000 \ kernel32.dll not found
 SYMSRV: http://msdl.microsoft.com/download/symbols/kernel32.dll/48E7156Cf0000/kernel32.dll not found
 DBGENG: C: \ Windows \ SysWOW64 \ kernel32.dll - Couldn't map image from disk.
 Unable to load image C: \ Windows \ SysWOW64 \ kernel32.dll, Win32 error 0n2
 DBGENG: kernel32.dll - Partial symbol image load missing image info
 DBGHELP: Module is not fully loaded into memory.
 DBGHELP: Searching for symbols using debugger-provided data.
 SYMSRV: C: \ WebSymbols \ wkernel32.pdb \ B0C3B36CC7EF4F3E9C168E186A5A6FEB2 \ wkernel32.pdb not found
 SYMSRV: http://msdl.microsoft.com/download/symbols/wkernel32.pdb/B0C3B36CC7EF4F3E9C168E186A5A6FEB2/wkernel32.pdb not found
 DBGHELP: wkernel32.pdb - file not found
 *** WARNING: Unable to verify timestamp for kernel32.dll
 *** ERROR: Module load completed but symbols could not be loaded for kernel32.dll
 DBGHELP: kernel32 - no symbols loaded
 SYMSRV: C: \ WebSymbols \ KERNELBASE.dll \ 48E7156D5a000 \ KERNELBASE.dll not found
 SYMSRV: http://msdl.microsoft.com/download/symbols/KERNELBASE.dll/48E7156D5a000/KERNELBASE.dll not found
 DBGENG: C: \ Windows \ SysWOW64 \ KERNELBASE.dll - Couldn't map image from disk.
 DBGENG: KERNELBASE.dll - Partial symbol image load missing image info
 DBGHELP: Module is not fully loaded into memory.
 DBGHELP: Searching for symbols using debugger-provided data.
 SYMSRV: C: \ WebSymbols \ wkernelbase.pdb \ A8683F0C515F469B833E3FA562E0DB251 \ wkernelbase.pdb not found
 SYMSRV: http://msdl.microsoft.com/download/symbols/wkernelbase.pdb/A8683F0C515F469B833E3FA562E0DB251/wkernelbase.pdb not found
 DBGHELP: wkernelbase.pdb - file not found
 *** WARNING: Unable to verify timestamp for KERNELBASE.dll
 *** ERROR: Module load completed but symbols could not be loaded for KERNELBASE.dll
 DBGHELP: KERNELBASE - no symbols loaded 

Any ideas? Are the characters simply unavailable on the Microsoft symbol server?

+4
source share
2 answers

Are you debugging a 32-bit or 64-bit system and a 32-bit or 64-bit version of WinDBG? Usually you have to debug the same architecture package from which you took the dump:

http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx

"The 32-bit version of the debugging tools for Windows is the best choice if you are not debugging the application on a 64-bit processor. In this case, you should use the 64-bit package."

Also, take a look at this article, where it debugs a 32-bit application running on a 64-bit platform:

http://blogs.msdn.com/alejacma/archive/2008/07/18/How-to-use-Windbg-to-debug-a-dump-of-a-32bit-.NET-app-running-on -a-x64-machine.aspx

+4
source

Consider the workaround described here, where syswo64 \ ntdll.dll is copied to Syswow64 \ ntdll32.dll

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98781&wa=wsignin1.0

It works for me.

-1
source

All Articles