Blue Screen Of Death (BSOD) - синий экран смерти.

Что такое "Blue Screen Of Death" (BSoD) .
Поиск проблемного драйвера.
Практические советы по анализу и устранению BSOD.


  • Что такое "Blue Screen Of Death" (BSOD).

  •     Термин "Синий экран смерти Windows (Blue Screen Of Death или сокращенно BSOD)" означает, что при выполнении программного кода ядра операционной системы возникла неустранимая ошибка, результатом обработки которой может быть только перезагрузка. Исторически, начиная с Windows 3.11, сообщение о подобной ошибке выдавалось на дисплей в виде текста на синем фоне, откуда и произошло это название. Иногда синие экраны смерти называют стоп - ошибками (stop error) или сокращенно Stop с указанием кода ошибки - Stop 0x0000001E или ещё короче - Stop 1E.

    Blue Screen Of Death


    Информация синего экрана смерти обычно содержит :

    - Краткое описание и символьное обозначение
    CRITICAL_OBJECT_TERMINATION
    - код ошибки и дополнительные данные для детализации
    *** STOP: 0x00000050 (0xe80f26cd, 0x00000000, 0xe80f26cd, 0x00000002)
    - имя программного модуля ядра или драйвера и другие параметры, если это возможно определить
    *** ntoskrnl.exe - Address 0x8044a2c9 base at 0x80400000 DateStamp 0x3ee6c002

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

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

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

    Каждому драйверу соответствует свой ключ, в составе которого имеется параметр Start, определяющий, на каком этапе загрузки системы производится загрузка и инициализация данного драйвера или службы. Значения Start:

    0 - BOOT - драйвер загружается загрузчиком.
    1 - SYSTEM - драйвер загружается в процессе инициализации ядра.
    2 - AUTO - служба запускается автоматически при загрузке системы.
    3 - MANUAL - служба запускается вручную.
    4 - DISABLE - отключено.

    Сами файлы драйверов хранятся в каталоге %SystemRoot%\system32\drivers.

        Сначала загружаются и инициализируются низкоуровневые драйверы устройств, параметр Start у которых равен 0. На данном этапе, для чтения данных с устройства загрузки используются функции прерывания INT 13H BIOS, что естественно, поскольку никаких других драйверов, в том числе и драйверов для работы с дисками, в оперативной памяти компьютера еще нет.

        Затем загружаются и инициализируются остальные драйверы устройств, параметр Start у которых равен 1. Для их загрузки и инициализации уже используются ранее загруженные драйверы с параметром Start=0

        Обработка ошибок в процессе инициализации драйверов устройств выполняется с использованием значения элемента ErrorControl ключа реестра, относящегося к драйверу, и в случае, когда дальнейшая работа не может быть продолжена, заканчивается "синим экраном" с соответствующим кодом ошибки.

        После успешно отработанного данного этапа начальной загрузки запускается "Диспетчер сеансов" (\SystemRoot\System32\smss.exe) , главная задача которого - запустить высокоуровневые подсистемы и сервисы (службы) операционной системы. На этом этапе запускаются процессы CSRSS (Client Server Runtime Process), WINLOGON (Windows Logon), LSASS (LSA shell), и оставшиеся службы с параметром Start=2 из раздела HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
        Информация, предназначенная для диспетчера сеансов, находится в ключе реестра

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control \Session Manager.

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

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



  • Поиск проблемного драйвера.

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

    Панель управления - Система - Дополнительно - Загрузка и восстановление


        Обычно установлен режим "Малый дамп памяти (64КБ)". Как правило, для определения драйвера, вызвавшего BSOD, этого вполне достаточно. При возникновении каждой последующей ошибки и создании нового файла малого дампа памяти Windows сохраняет предыдущий файл. Каждому записываемому файлу дампа присваивается отдельное имя с указанием даты. Например, Mini123109-01.dmp - это первый файл дампа памяти, созданный 31 декабря 2009 г. Файлы малого дампа памяти по умолчанию хранятся в папке %SystemRoot%\Minidump.
        Для анализа дампа можно использовать стандартные средства Windows dumpchk.exe (Crash Dump Analisys utility), отладчик Windbg или kd.exe
    Здесь статья из базы знаний Microsoft c примерами.
        Гораздо удобнее для анализа малого дампа воспользоваться бесплатной утилитой BlueScreenView от Nir Sofer.

    Страничка программы BlueScreenView на официальном сайте. Описание на английском языке. В нижней части страницы приведены ссылки для скачивания 32-х и 64-х битных версий программы.
    Скачать инсталлятор для 32-разрядных ОС, ~ 120 кб.
    Скачать переносимую редакцию программы для 32-разрядных ОС в виде архива, ~ 60 кб.

    Окно программы состоит из 2-х частей. В верхней части - список и свойства файлов минидампов, в нижней - данные, имеющие отношение к выбранному минидампу:

    BlueScreenView


        Формат отображения данных в нижнем окне можно задавать с помощью меню "Options- Lower Pane Mode":

    - All drivers - отображать все загруженные драйверы. На красном фоне отображена информация о драйверах, возможно являющихся причиной BSOD.

    - Only Drivers Found in Stack - отображать только драйверы, присутствующие в стеке вызовов и, возможно являющиеся причиной BSOD.
    - Blue Screen in XP style - отображать BSOD в стиле Windows XP
    DumpChk Output - отображать информации в том виде, в каком это делает Microsoft DumpChk utility. Утилита должна быть установлена в системе.

    BlueScreenView автоматически определяет местонахождение файлов минидампов и выводит информацию обо всех критических ошибках, дампы которых обнаружены. Возможен также анализ аварийных дампов, созданных в другой системе, с использованием меню Options - Advanced Options CTRL+O

    BlueScreenView Advanced Options


    В поле Load From the following Minidump folder можно указать путь к папке с файлами минидампов.

    Одной из приятных особенностей программы BlueScreenView является возможность централизованного удаленного анализа минидампов на компьютерах локальной сети с рабочего места системного администратора. Программа может использоваться в режиме получения данных от компьютеров, имена или IP-адреса которых содержатся в простом текстовом файле. Для получения списка компьютеров локальной сети можно воспользоваться командой net view с перенаправлением вывода результатов в текстовый файл:

    net view > C:\comps.txt - отобразить список компьютеров локальной сети, включенных в данный момент и результаты записать в файл C:\comps.txt

    В файле comps.txt будет информация в виде :

    
    
    Имя сервера            Заметки
    
    -------------------------------------------------------------------------------
    \\Acomp                                                                        
    \\Bcomp1                                                                           
    \\Bcomp2                                                                        
    \\COMP000                                                                      
    \\PROXY                                                                        
    \\SERVER                                                                     
     . . .                                                                            
    \\ZCOMP7                                                                         
    Команда выполнена успешно.
    
    
    Остается только убрать строки, не содержащие имена компьютеров и служебные символы \\ перед именами:

    Acomp                                                                        
    Bcomp1                                                                           
    Bcomp2                                                                        
    COMP000                                                                      
    PROXY                                                                        
    SERVER                                                                     
     . . .                                                                            
    ZCOMP7                                                                         
    
    Имена или IP-адреса компьютеров, которые не попали в список можно добавить вручную. Теперь, в меню Options - Advanced Opnions, в поле Load from multiple remote computers specified in the following text file: можно указать путь к текстовому файлу со списком компьютеров.

    В качестве дополнительной опции, можно добавить Dumkchk Command для того, чтобы получить возможность просмотра результатов в виде вывода Microsoft DumpChk utility при наличии установленного отладочного пакета Майкрософт (Debugging Tools for Windows).

    Информация колонок верхней части (Upper Pane):

    - Dump File: - имя файла минидампа.
    - Crash Time: - время записи минидампа
    - Bug Check String: - строка с описанием стоп-ошибки.
    - Parameter 1/2/3/4: 4 параметра, выводимые в сообщении синего экрана.
    - Caused By Driver: - подозреваемый драйвер. BlueScreenView пытается определить драйвер, вызвавший синий экран смерти путем просмотра стека системных вызовов. Однако нельзя с полной уверенностью сказать, что именно данный драйвер является причиной стоп-ошибки. Необходимо учитывать также и те данные о драйверах стека, которые отображаются в нижней части экрана .
    - Caused By Address: подобно колонке 'Caused By Driver' содержит предполагаемый адрес команды, вызвавший ошибку.
    - File Description: описание драйвера, предположительно, вызвавшего крах системы.
    - Product Name: - имя драйвера или программного модуля.
    - Company: - название компании - разработчика.
    - File Version: - версия файла.
    - Crash Address: адрес памяти, связанный с источником ошибки. (Адрес из регистра EIP/RIP процессора). Обычно, здесь то же самое значение, сто и в колонке 'Caused By Address'
    - Stack Address 1 - 3: - данные последних трех вызовов, обнаруженные в стеке. В некоторых случаях значения могут отсутствовать. Для 64-битных версий Windows эта колонка всегда не содержит данных, поскольку для них не поддерживается список системных вызовов в дампе аварийного завершения.

    Информация о драйвере в колонках нижней панели (Lower Pane)

    - Filename: имя драйвера или программного модуля.
    - Address In Stack: - адрес памяти, найденный в стеке и относящийся к данному модулю.
    - From Address: начальный адрес данного модуля.
    - To Address: конечный адрес данного модуля.
    - Size: - размер модуля в памяти.
    - Time Stamp: Время в сокращенном формате.
    - Time String: время в формате date/time .
    - Product Name: имя продукта. Берется из файла драйвера или программного модуля.
    - File Description: - описание. Также берется из файла.
    - File Version: - версия. Также берется из файла.
    - Company: название компании - производителя программного продукта. Также берется из файла.
    - Full Path: - полный путь драйвера или программного модуля.

    В случае, когда используется анализ дампов, полученных с компьютеров локальной сети, имя или адрес компьютера отображается в колонке Computer Name и в полном пути к файлу минидампа Full Path

    Программа очень проста и удобна. Есть русификатор в виде ini-файла, который нужно скопировать в каталог с установленной программой BlueScreenView. Скачать, ~ 3 кб.

    Описания кодов ошибок и методики их устранения можно найти, например, на softboard.ru





  • Практические советы по анализу и устранению BSOD.



  • - если синий экран смерти возник после установки какого - либо программного обеспечения, и войти в систему не удается по причине стоп-ошибки, то нередко проблема решается выбором режима загрузки последней удачной конфигурации из меню загрузчика. (Меню вызывается нажатием F8 в начале загрузки Windows)
    - если синий экран смерти возникает при выполнении ресурсоемких задач, таких как компьютерные игры с высокими требованиями к оборудованию, а в остальное время система работает стабильно - наверняка проблема связана с перегревом или ухудшением характеристик питающих напряжений под повышенной нагрузкой.
    - если синий экран не связан с загруженностью системы, и возникает спонтанно, а в стеке драйверов, подозреваемых в причине возникновения ошибки, присутствуют одни и те же имена исполняемых файлов или файлов драйверов, вероятно, причина синего экрана смерти кроется именно в их некорректной работе. Нередко это могут быть драйверы антивирусов, систем защиты ПО от несанкционированного распространения, эмуляции приводов и противодействия системам защиты, а также драйверы или службы, используемые вредоносным или нежелательным программным обеспечением , или нестандартные драйверы сторонних производителей.
    - причиной синего экрана смерти могут быть драйверы руткитов, используемых вирусными программами для скрытия своего присутствия в системе. Их некорректная работа может сопровождаться ошибками с разными кодами и наличием в стеке подозреваемых программой BlueScreenView файлов, которые либо не видны в файловой системе, либо в системном реестре нет связанных с ними записей.
    - причиной большинства критических ошибок Windows являются сбои или неисправность оборудования, поэтому, не стоит в качестве главного способа решения проблемы использовать переустановку системы. Если у вас есть обоснованное предположение о том, что ошибка вызвана не оборудованием, а повреждением системных настроек Windows, попробуйте выполнить откат системы с использованием точки восстановления с датой, когда система еще работала без нареканий. В качестве дополнительной меры можно воспользоваться переустановкой Service Pack (или установкой его старшей версии).
    - Если синий экран смерти стал появляться после установки критических обновлений с сайта Microsoft (редко, но бывает) попробуйте удалить последние обновления.
    - Если критическая ошибка возникает в процессе загрузки Windows и нет возможности войти в систему, воспользуйтесь простым и эффективным средством средств выяснения причин стоп-ошибки и восстановления работоспособности Windows - ERD Commander . ERD Commander позволяет вернуть Windows в работоспособное состояние довольно простыми и эффективными способами с использованием набора специальных программных инструментов ( Toolkit ).

    Если у Вас нет желания разбираться с причинами BSOD, а загрузка системы не выполняется по причине какой-либо стоп-ошибки, самым простым способом реанимации Windows является использование отката на работоспособную точку восстановления (Restore Point) c помощью ERD Commander'а. Для этого нужно загрузить ERDC, подключиться к неработоспособной Windows и выполнить откат системы с помощью инструмента System Restore на точку восстановления, созданную в работоспособном состоянии. Естественно, это не относится к тем случаям, когда синий экран смерти вызван сбоями или отказом оборудования.

        В случае, когда испорчен файл system (это куст реестра с данными раздела HKLM\SYSTEM), то загрузка может завершаться сообщением об ошибке system или вообще черным экраном без каких-либо сообщений. Здесь также может помочь использование ERD Commander. С его помощью можно выполнить проверку системного диска Windows (chkdsk.exe), поскольку причиной невозможности загрузить куст System может быть ошибка файловой системы, а также, можно откатить систему на точку восстановления или выполнить ручное восстановление работоспособной копии раздела System из данных сохраненной точки восстановления.

    Данные контрольных точек хранятся в каталоге System Volume Information системного диска Windows. Это скрытый системный каталог, доступ к которому в среде работающей в нормальном режиме операционной системы, разрешен только локальной системной учетной записи Local System (т.е. не реальному пользователю а "Службе восстановления системы"). Поэтому, если необходимо получить доступ к его содержимому, нужно добавить права вашей учетной записи с использованием вкладки "Безопасность" в свойствах каталога "System Volume Information". Но в случае использования Winternals ERD Commander или загрузки в другой операционной системе этого делать не нужно. В папке System Volume Information есть подкаталог с именем, начинающемся с _Restore... и внутри него - подкаталоги RP0, RP1: - это и есть искомые контрольные точки (Restore Point - RPx). Внутри папки RPx имеется каталог snapshot, содержащий копии файлов реестра на момент создания контрольной точки.

    REGISTRY_MACHINE_SYSTEM - это и есть копия файла реестра SYSTEM


    Файл REGISTRY_MACHINE_SYSTEM - это и есть копия файла SYSTEM, он же - раздел реестра HKEY_LOCAL_MACHINE\SYSTEM .
    Для восстановления системы можно скопировать этот файл в каталог \WINDOWS\SYSTEM32\CONFIG\ и переименовать его в system. Запорченный файл system можно, на всякий случай, переименовать в system.bad или удалить.
    Если вы будете использовать Winternals ERD Commander, который работает с реестром подключенной системы, то могут возникнуть проблемы с занятостью файлов в каталоге \windows\system32\config . Чтобы этого не случилось, можно в процессе загрузки ERDC не подключаться к проблемной операционной системе и выбрать None:

    None - не будет выполняться подключение к какой-либо системе


    Подавляющее большинство ошибок синего экрана смерти, не являющихся следствием неисправности оборудования, связаны с ошибками в работе драйверов и системных служб. Записи об этих компонентах ОС хранятся в разделе реестра HKEY_LOCAL_MACHINE\SYSTEM и восстановление этого раздела позволяет легко избавиться от таких BSOD.

    Если BSOD появляются с увеличением нагрузки на систему (в компьютерных играх, ресурсоемких задачах и т.п.) наиболее вероятной причиной являются перегрев. Попробуйте увеличить охлаждение, например, сняв крышку корпуса, установив дополнительные вентиляторы или, даже временно установив обычный бытовой вентилятор для обдува внутренностей системного блока. Для контроля за температурой используйте специальное программное обеспечение - Everest HWINFO32, SpeedFan и т.п.


    Если вы желаете поделиться ссылкой на эту страницу в своей социальной сети, пользуйтесь кнопкой "Поделиться"











    В начало страницы     |     На главную страницу сайта