На какую коррупцию указывают WinDbg и! Chkimg?

У меня часто бывает 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)

а также

CHKIMG_EXTENSION: !chkimg -lo 50 -d !nt
    fffff8021531ae6d-fffff8021531ae6e  2 bytes - nt!MiPurgeZeroList+6d
    [ 80 fa:00 aa ]
2 errors : !nt (fffff8021531ae6d-fffff8021531ae6e)

Что это значит? Что с чем сравнивать и как может быть, что коррупция похожа? Это явно указывает на проблему с ОЗУ?

ОБНОВИТЬ

Что означают эти цифры? fffff80177723e6d а также fffff8021531ae6d? Что это значит, что окончания совпадают?

Что означает следующий код: nt!MiPurgeZeroList+6d?

1 ответ

Я уже ответил на это на superuser.com. Windbg загружает исходные файлы Exe/DLL с сервера символов, и теперь команда chkimg обнаруживает повреждения в изображениях исполняемых файлов, сравнивая их с копией в хранилище символов.

Все разделы файла сравниваются, за исключением разделов, которые могут быть отброшены, доступны для записи, не являются исполняемыми, имеют имя "PAGE" или принадлежат INITKDBG. Вы можете изменить это поведение, используя ключи -ss, -as или -r.

!chkimg отображает любое несоответствие между изображением и файлом как ошибку изображения, со следующими исключениями:

  • Адреса, занимаемые таблицей адресов импорта (IAT), не проверяются.

  • Некоторые конкретные адреса в файлах Hal.dll и Ntoskrnl.exe не проверяются, поскольку при загрузке этих разделов происходят определенные изменения. Чтобы проверить эти адреса, включите опцию -nospec.

  • Если значение байта 0x90 присутствует в файле и если значение 0xF0 присутствует в соответствующем байте изображения (или наоборот), эта ситуация считается совпадением. Обычно сервер символов содержит одну версию двоичного файла, которая существует как в однопроцессорной, так и в многопроцессорной версиях. На процессоре x86 инструкция блокировки равна 0xF0, и эта инструкция соответствует команде nop (0x90) в однопроцессорной версии. Если вы хотите, чтобы! Chkimg отображал эту пару как несоответствие, установите опцию -noplock.

Если с ОЗУ все в порядке, проверьте кабели жесткого диска / жесткого диска на наличие ошибок (утилита diag диска и запустите chk dsk для обнаружения и устранения проблем NTFS). Вы также можете подключить жесткий диск к другому порту SATA на материнской плате.

Другие вопросы по тегам