Синий экран смерти

Алексей Комолов (С.-Петербург)

2

”Синий экран смерти” появляется в том случае, когда в Windows возникает серьезная ошибка и операционная система не может дальше продолжать работу. Экран становится синим (отсюда и название) и белым текстом выводится небольшая информация о произошедшей ошибке с названием ошибки и кодом этой самой ошибки. Иногда вместо кода указывается имя файла, который вызвал и эту ошибку и сам синий экран смерти.

Исключение только в Windows 8 – там вместо описания ошибки на синем экране высвечивается грустное сообщение о том, что произошла критическая ошибка, в связи с чем Windows не может дальше работать (описания ошибок больше нет).

Если синий экран появился всего-то один два раза, то на проблему можно не обращать внимания, а вот если он появляется регулярно, то это уже повод для более детальных исследований проблемы.

Что может послужить причиной возникновения синего экрана смерти? Это может быть:

— сбои в работе драйверов (обычно это наиболее частая причина возникновения синего экрана смерти);

— сбои в работе некоторых программ. В основном сюда входят различные антивирусы и файрволлы. Они также часто бывают причиной возникновения синих экранов смерти. Но могут быть и какие-нибудь другие программы;

  • сбои в работе “железа”: например, бракованные планки оперативной памяти, сбои в работе жесткого диска, видеокарты или материнской платы с устройствами, которые на ней размещены;
  • сбои в цепи питания;
  • сбои при перегреве какого либо устройства.

Обычно компьютер или ноутбук, высветив синий экран смерти, сразу перезагружается. В итоге пользователь ничего не успевает разглядеть. Саму перезагрузку можно отключить (об этом – ниже).

Сначала нужно узнать имя файла, который вызвал синий экран (если только вы не успели его разглядеть сразу).

Для этого сначала нужно включить запись отладочной информации. При возникновении синего экрана смерти система может сохранить в файл детали об ошибке, которая произошла. По-умолчанию данная функция в Windows отключена. Для ее включения идите в Панель управления > Система > Дополнительно > Загрузка и восстановление > Параметры. В открывшемся окне в выпадающем меню выберите Малый дамп памяти (64 КБ).

В этом же окне можно отключить автоматическую перезагрузку системы при возникновении синего экрана смерти. Для этого достаточно снять галочку с пункта “Выполнять автоматическую перезагрузку”.

Там же, внизу, указывается, куда эти самые дампы будут сохраняться. Обычно они сохраняются в C: > Windows > Minidump.

Жмите ОК.

Теперь начинаем работать с компьютером и ждем синего экрана смерти. Дождались? После его появления в папке C: > Windows > Minidump появится файл с именем, начинающимся на Mini…. Этот файл будет содержать информацию об ошибке, которая и вызвала синий экран смерти.

Далее можно переходить к его анализу. Есть два способа анализа этого файла: простой и сложный. Но сложный способ позволяет получить гораздо больше информации об ошибке, чем простой.

Но начнем с простого способа.

Сначала вам нужно скачать набор с утилитами с: http://notebookclub.org/link.php?id=3 или с http://notebookclub.org/link.php?id=4.

Сохраните его на диске C:. В результате у вас на диске С: должна появится папка BSOD.

Перейдите в папку BlueScreenView и запустите BlueScreenView.exe — эта утилита автоматически сканирует папку C: > Windows > Minidump на наличие дампов памяти, а потом сканирует каждый файл. В результате, если выделить мышкой дамп памяти в верхнем окне, то в нижнем появится информация об ошибке.

Сложный способ анализа дампа

Для его реализации нужно сначала установить Windows Debugging Tools, скачать который вы могли по одной из описанных выше ссылок. Windows Debugging Tools представляет собой архив, в составе которого так же есть скрипт kdfe.com, который тоже понадобится.

Запустите Командную строку с правами Администратора и введите команду

C:BSODkdfe.cmd C:WindowsMinidump(имя вашего дампа)

Жмите Enter.

В появившемся списке ищите строку:

Probably caused by

Там указано, какой файл, возможно, вызвал синий экран смерти.

Если этой информации вам недостаточно, то вы можете запустить команду с ключом -v в конце:

C:BSODkdfe.cmd C:WindowsMinidump(имя вашего дампа) –v

В этом случае вам выведется гораздо больше информации. Ее можно сохранить в текстовый файл. Для этого нужно в конце команды дописать:

C:bsod.txt

В результате на диске С: должен появится файл bsod.txt.

Теперь можно приступить к решению проблемы с синим экраном смерти. Ниже я опишу решение своими силами наиболее частых проблем с синим экраном смерти (не факт, что вам поможет нижеописанное; если что – ищите в Интернете).

Итак, у вас уже есть имя файла, который вызывает ошибку. Теперь нужно определить, к какой программе или драйверу данный файл относится. Ниже я привел список наиболее распространенных драйверов (для некоторых драйверов даны только первые буквы):

afw.sys, afwcore.sys и filtnt.sys — Agnitum Outpost;

spider.sys, dwprot.sys — Dr.Web;

rt*** и alc*** — драйвер для устройств Realtek, обычно это звуковая или сетевая карты;

cnx*** — драйвер для устройств Conexant;

nv*** — драйвер для устройств nVidia, чаще всего это видеокарта;

ati*** — драйвер для устройств ATI, чаще всего это видеокарта;

ig*** — драйвер для устройств Intel, чаще всего это встроенное видео-ядро от Intel.

Когда проблемный драйвер или программа обнаружены, то их стоит обновить или заменить на другие версии (удалить и установить по новой).

Также загляните в Журнал событий — там можно найти много полезной информации об ошибке.

Расшифровка ошибок Синего экрана смерти

А теперь я предложу описание кода и расшифровок ошибок, вызвавших Синий экран смерти.

0x00000037

Ошибка дисковода гибких дисков.

0x0000003E

Мультипроцессорная система не поддерживается или не симметрична по отношению друг к другу. Чтобы быть симметричными, процессоры должны быть одного типа и уровня.

Например, попытка использовать процессор уровня Pentium и 80486 вызовет ошибку. Кроме того, на х86 системах возможности вычислений с плавающей точкой должны быть на обоих процессорах или ни на одном.

0x0000003F

В системе закончились записи в таблице страниц. Не хватает Page File Entries. Обычно причиной является драйвер, который плохо вычищает файл подкачки или нет места на диске.

0x00000040

Это ошибка драйвера, который вызвал функцию IoBuildPartialMdl() и послал ей MDL, чтобы выявить часть источника MDL, но MDL меньше, чем пределы требуемых адресов.

0x00000044

1-адрес IRP.

Драйвер запросил завершение IRP [IoCompleteRequest()], но пакет был уже завершен. Эту ошибку сложно выявить, так как самый простой случай — драйвер пытается завершить одну и ту же операцию дважды — обычно не то, что случается на самом деле. Реже — два различных драйвера пытаются завладеть пакетом и завершить его. Первый, как правило, срабатывает, а второй нет. Отследить, какой именно драйвер сделал это, трудно, так как следы первого драйвера были переписаны вторым. Тем не менее, конфликт может быть выявлен, рассматривая DeviceObject поля, в каждом местоположении стэка.

0x00000048

Это ошибка указывает, что I/O Request Packet (IRP), который должен быть завершен, имеет порядок отмены, означая, что пакет в таком положении, что может быть отменен. Тем не менее, пакет не относиться более к драйверу, так как он уже вошел в стадию завершения.

0x00000049

Ошибка страницы с отключенным прерыванием. Рассматривайте эту ошибку, так же как 0x0A.

0x0000004C

Winlogon или CSRSS (Windows) внезапно “умерли”. Выходящий код может сказать больше. Обычно это — c0000005, что говорит о том, что неподдерживаемое исключение рухнуло в том или другом процессе. Также возникает, если драйвер или системная библиотека были распознана, как поврежденные.

0x0000004D

— количество использованных страниц;

— количество физических страниц.

Нет больше свободного места, чтобы закончить операцию.

0x0000004E

значение 1:

— значение заголовков страниц, которые повреждены;

— число доступных страниц 0.

значение 2:

— данные, которые удаляются;

— наивысшее число физических страниц;

— итог удаляемых данных.

Причина — поврежденная (неисправная) структура ввода-вывода драйвера.

0x00000050

Указывает на ошибочный адрес в памяти.

Драйвер устройства или системная служба запросили данные, которых не было в памяти. Это дефект ОЗУ или несовместимое ПО.

0x00000051

— значение 1 (указывает, где появилась ошибка);

— значение 2 (указывает, где появилась ошибка);

— может указывать на библиотеку;

— может быть возвратным кодом HvCheckHive’а, если какая-либо библиотека повреждена.

Ошибка реестра. Эта ошибка так же может означать, что реестр получил ошибку ввода — вывода, когда пытался прочесть один из его файлов. Ошибка могла быть вызвана проблемой с оборудованием или система повреждена. Это так же может означать, что ошибка вызвана операцией обновления, которую использует только система безопасности и это только когда ресурсы на исходе. Если такая ошибка появилась, проверьте, является ли машина PDC или BDC и сколько аккаунтов в базе данных SAM (Менеджер Безопасности Аккаунтов), и не заполнены ли соответствующие библиотеки почти до конца.

0x00000058

Система загрузилась с восстановленного первичного раздела, поэтому библиотеки говорят, что зеркало в порядке, но на самом деле это не так: настоящие образы изменены.

0x00000069

Инициализация системы не удалась. Например, установка приняла не правильное решение по поводу инсталляции системы или пользователь переконфигурировал систему.

0x00000073

— список библиотек.

Указывает UNICODE_STRING, содержащий имя поврежденной или нечитаемой системной библиотеки. Эта библиотека может быть SOFTWARE, SECURITY или SAM (Менеджера Безопасности Аккаунтов).

0x00000074

Эта ошибка может показывать то, что библиотека SYSTEM, загружаемая NTLDR, повреждена. Но это практически невозможно, так как OSLOADER всегда проверяет библиотеки после загрузки и убеждается, что они не повреждены.

Эта ошибка так же может означать, что некоторые требуемые ключи реестра и их параметры отсутствуют. Загрузка с последней удачной конфигурации может решить проблему.

0x00000075

На диске нет свободного места, так же это может произойти при попытке сохранить реестр на устройстве “только для чтения”

0x00000077

— значение PTE на момент ошибки;

— адрес ошибки ядра;

— код статуса;

— I/O код статуса;

— номер страницы виртуальной памяти;

— компенсация в страничный файл.

Система попыталась считать данные ядра из виртуальной памяти (файла подкачки) и не смогла найти данные по указанному адресу. Причины: дефекты ОЗУ, сбои жесткого диска, повреждение данных или заражение вирусной программой и т.д.

0x00000079

Тип несовпадения:

—  несовпадение уровней выпуска PRCB (несовпадение дат).

— больший уровень NTOSKRNL.EXE

— больший уровень HAL.DLL2.

Несовпадение типов бильдов – например, тип бильда NTOSKRNL.EXE или тип бильда HAL.DLL.

Micro Channel Architecture (MCA) компьютерам требуется специфичный MCA HAL. Причина — внезапное изменение параметров BIOS’а на компьютерах с AСPI, например, установка жесткого диска с системой в другой компьютер. Возможно, пользователь вручную обновил либо NTOSKRNL.EXE, либо HAL.DLL на несовместимые версии.

0x0000007A

Ошибка имеет ту же причину, что и ошибка 0х77 (в предыдущей статье): страница с данными ядра не найдены в виртуальной памяти (файле подкачки). Ошибка вызвана плохим блоком в памяти или ошибкой контроллера диска.

0x0000007B

Указатель на объект устройства. Не найден системный раздел или загрузочный том в процессе запуска. Проблема обычно в переразбиении дисков на разделы, добавлении новых дисков перед загрузочным. В итоге записи в Boot.ini перестают соответствовать правильным разделам.

0x0000007D

— номер найденных физических страниц;

— нижняя физическая страница;

— высшая физическая страница.

Не хватает памяти, чтобы загрузить Windows. Причина может быть в дефекте или в слишком маленькой величине ОЗУ.

0x0000007F

Появляется, когда процессор допускает ошибку, с которой ядро не может справиться. Чаще всего возникает из-за дефектов ОЗУ, остановке кулера процессора, а так же из-за разгона процессора и, как следствие, его перегреве.

В следующем номере я закончу описание ошибок Синего экрана смерти.

jfdghjhthit45