!heap失败。 ntdll的类型信息无效!_HEAP_ENTRY [英] !heap failed. Invalid type information for ntdll!_HEAP_ENTRY

查看:95
本文介绍了!heap失败。 ntdll的类型信息无效!_HEAP_ENTRY的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从Windows Server 2003 SP2 x86上的完整转储内存文件中转储堆信息。转储是为在Windows Server 2003 SP2 x64计算机上运行的32位混合(本机/ clr)应用程序创建的。

I'm trying to dump heap information from full dump memory file sitting on Windows Server 2003 SP2 x86. Dump was created for 32-bit mixed (native/clr) application which was running on Windows Server 2003 SP2 x64 machine.

从下面的windbg日志中,我了解到加载的ntdll.dll映像不正确,并且与ntdll.pdb符号不对应。我尝试从目标计算机指定ntdll.dll的位置,但是windbg仍显示模块是从标准位置(c:\windows\system32)加载的。

From the following windbg log I understand that loaded ntdll.dll image is incorrect and does not correspond to ntdll.pdb symbols. I have tried to specify the location to ntdll.dll from the target machine but windbg still shows that the module is loaded from the standard location (c:\windows\system32).

我做错了什么?如何强制windbg加载 ntdll 的正确版本?

What did I do wrong? How to force windbg to load correct version of ntdll?


Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
Copyright (c) Microsoft Corporation. All rights reserved.

[ ... skipped ... ]

0:042> vertarget
Windows Server 2003 Version 3790 (Service Pack 2) MP (4 procs) Free x86 compatible
Product: Server, suite: TerminalServer SingleUserTS
kernel32.dll version: 5.2.3790.4480 (srv03_sp2_gdr.090321-1244)
Machine Name:
Debug session time: Wed Mar 16 16:36:10.000 2011 (GMT-5)
System Uptime: 17 days 10:34:26.068
Process Uptime: 1 days 15:19:14.000
  Kernel time: 0 days 1:24:01.000
  User time: 0 days 22:07:58.000

0:042> .sympath
Symbol search path is: C:\mscordacwks\v2.0.50727.3615;C:\__exe;SRV*C\Symbols*http://referencesource.microsoft.com/symbols;SRV*c:\Symbols*http://msdl.microsoft.com/download/symbols;SRV*C:\Symbols*http://source.msdn.microsoft.com/symbols

0:042> .exepath
Executable image search path is: C:\__exe;C:\__target\Windows\SysWOW64;

0:042> .reload

[ ... skipped ... ]

0:042> .reload /u ntdll.dll
Unloaded ntdll.dll
0:042> .reload /v /f ntdll.dll
AddImage: C:\WINDOWS\system32\ntdll.dll // why is it still c:\windows\system32
 DllBase  = 7d600000
 Size     = 000f0000
 Checksum = 000c371a
 TimeDateStamp = 4cc1831e

0:042> lm
[ ... skipped ... ]
7d600000 7d6f0000   ntdll      (pdb symbols) c:\symbols\wntdll.pdb\9ED8E09C6723448380648C4456726AEF2\wntdll.pdb

0:042> !heap 
*************************************************************************
***    Your debugger is not using the correct symbols                 ***
[ ... skipped ... ]
***    Type referenced: ntdll!_HEAP_ENTRY                             ***
*************************************************************************
Invalid type information 

0:042> lmi vm ntdll
start    end        module name
7d600000 7d6f0000   ntdll      (pdb symbols)          ntdll.dll
    Symbol file: c:\symbols\wntdll.pdb\9ED8E09C6723448380648C4456726AEF2\wntdll.pdb
    Image path: C:\WINDOWS\system32\ntdll.dll
    Image name: ntdll.dll
    Timestamp:        Fri Oct 22 07:27:10 2010 (4CC1831E)
    CheckSum:         000C371A
    ImageSize:        000F0000
    File version:     5.2.3790.4789 // this is correct and 
    Product version:  5.2.3790.4789 // does correspond to target computer
    File flags:       0 (Mask 3F)
    File OS:          40004 NT Win32
    File type:        2.0 Dll
    File date:        00000000.00000000
    Translations:     0409.04b0
    CompanyName:      Microsoft Corporation
    ProductName:      MicrosoftR WindowsR Operating System
    InternalName:     ntdll.dll
    OriginalFilename: ntdll.dll
    ProductVersion:   5.2.3790.4789
    FileVersion:      5.2.3790.4789 (srv03_sp2_gdr.101019-0340)
    FileDescription:  NT Layer DLL
    LegalCopyright:   c Microsoft Corporation. All rights reserved.

更新:

我移动了一点在我的问题上更进一步。我设法连接到客户方的实时流程,并尝试
在那儿调查堆(堆-s),基本上我得到了相同的结果。

I moved a little bit further in my issue. I managed to connect to the live process on the customers side and tried to investigate heap (heap -s) there and basically I got the same result.


(1520.7c4): Wake debugger - code 80000007 (first chance)
eax=00000000 ebx=00327d50 ecx=00000000 edx=00000000 esi=0030b428 edi=002debe4
eip=7d61c876 esp=002df008 ebp=002df06c iopl=0         nv up ei pl nz na po nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000202
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\WINDOWS\system32\ntdll.dll -
ntdll!ZwReadFile+0x15:
7d61c876 c22400          ret     24h
0:000> !heap -s
*************************************************************************
***    Your debugger is not using the correct symbols                 ***
*** [...skipped...]                                                   ***
***    Type referenced: ntdll!_HEAP_ENTRY                             ***
*************************************************************************
Invalid type information
0:000> .reload
Reloading current modules
................................................................
....................................
0:000> !heap -s
*************************************************************************
***    Your debugger is not using the correct symbols                 ***
*** [...skipped...]                                                   ***
***    Type referenced: ntdll!_HEAP_ENTRY                             ***
*************************************************************************
Invalid type information

我认为我有一个与本文中提到的问题类似的问题 http://support.microsoft.com/kb/959207
环境和问题似乎相同,但dll版本不同,所以它不是我的解决方案。

I think I have a problem similar to one mentioned in this article http://support.microsoft.com/kb/959207. Environment and problem seem to be the same but dll versions are different, so it is not the solution for me.

我认为我必须解决这个问题微软。

I think I have to escalate this problem to Microsoft.

有人知道我该去哪里吗?

Does anybody know where I should go with this question?

推荐答案

解决方案似乎很简单,但并不明显。

The solution appears to be easy but not obvious.


  • 我发现一个wntdll.pdb略大于我的wntdll.pdb,其中包含必需的符号,并用命令重新加载.reload / f / i ntdll.dll

,在当前版本中,我采用的是上一个版本的windbg 6.11.0001.404。 6.12.0002.633 !heap 命令在我的情况下仍然不起作用。

and I take the previous build of windbg 6.11.0001.404, in the current one 6.12.0002.633 !heap command still does not work in my case.

这篇关于!heap失败。 ntdll的类型信息无效!_HEAP_ENTRY的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆