WinDbg和WinDbg显示了什么样的损坏!奇金?

WinDbg和WinDbg显示了什么样的损坏!奇金?,windbg,memory-corruption,Windbg,Memory Corruption,我经常有BSODs和WinDbg报告它们中的大多数存在类似的损坏 4: kd> !chkimg -lo 50 -d !nt fffff80177723e6d-fffff80177723e6e 2 bytes - nt!MiPurgeZeroList+6d [ 80 fa:00 e9 ] 2 errors : !nt (fffff80177723e6d-fffff80177723e6e) 及 这是什么意思?与之相比的是什么?腐败是如何相似的?它是否明确指出RAM问题 更新

我经常有
BSODs
和WinDbg报告它们中的大多数存在类似的损坏

4: kd> !chkimg -lo 50 -d !nt
    fffff80177723e6d-fffff80177723e6e  2 bytes - nt!MiPurgeZeroList+6d
    [ 80 fa:00 e9 ]
2 errors : !nt (fffff80177723e6d-fffff80177723e6e)

这是什么意思?与之相比的是什么?腐败是如何相似的?它是否明确指出RAM问题

更新

这些数字意味着什么<代码>FFF 80177723E6D和
FFF 8021531E6D
?结局是什么意思


下面的代码是什么意思:
nt!MiPurgeZeroList+6d

我已经在superuser.com上回答了这个问题。Windbg从符号服务器下载原始Exe/DLL,现在通过将可执行文件的图像与符号存储上的副本进行比较来检测可执行文件图像中的损坏

将比较文件的所有部分,但不包括 可丢弃的,可写的,不可执行的,具有 “页面”的名称,或来自INITKDBG的名称。你可以改变这个 行为可以通过使用-ss、-as或-r开关来实现

!chkimg
将图像和文件之间的任何不匹配显示为 图像错误,以下情况除外:

  • 不检查导入地址表(IAT)占用的地址

  • Hal.dll和Ntoskrnl.exe中的某些特定地址未被检查,因为加载这些节时会发生某些更改。 要检查这些地址,请包括-nospec选项

  • 如果文件中存在字节值0x90,并且图像的相应字节中存在值0xF0(反之亦然) 反之亦然),这种情况被视为匹配。通常,符号 服务器持有存在于两个单处理器中的二进制文件的一个版本 和多处理器版本。在基于x86的处理器上,锁 指令为0xF0,此指令对应于nop(0x90) 单处理器版本中的指令。如果你愿意!奇金托 将此对显示为不匹配,设置-noplock选项


如果RAM正常,请检查HDD/HDD电缆是否存在错误(磁盘诊断工具并运行chkdsk以检测和修复NTFS问题)。您还可以将HDD连接到主板上的不同SATA端口。

如果
!chkimg
显示了映像和磁盘文件之间的差异,那么
DSIM
怎么看不到差异呢?可能是
!chkimg
与内存相比?PSI已经对现有电缆执行了所有可能的操作;我希望理解这里的调试主题,它将在转储中找到的文件与symbol server中的清理图像进行比较。如果HDD电缆损坏,则在从磁盘读取到内存的过程中可能会损坏,但dump表示内存。所以它比较了从转储和从在线图像。不匹配意味着在BSOD之前将文件加载到内存时出错。这对应于DSIM的检查,它比较磁盘和图像,对吗?今天我放置了全新的电缆。MiPurgeZeroList是内存管理器的一个功能,用于清理内存,将内存页移动到空闲或零内存列表
CHKIMG_EXTENSION: !chkimg -lo 50 -d !nt
    fffff8021531ae6d-fffff8021531ae6e  2 bytes - nt!MiPurgeZeroList+6d
    [ 80 fa:00 aa ]
2 errors : !nt (fffff8021531ae6d-fffff8021531ae6e)