8. Повідомлення Blue Screen of Death

Стоп-повідомлення про помилки (Blue Screen of Death, BSOD) виникають у системах сімейства Windows NT у тому випадку, якщо операційна система виявляє фатальний збій, у результаті якого вона не може продовжити своє нормальне функціонування.

Повідомлення STOP містять спеціальний код ідентифікації (наприклад, STOP: 0x000000D1, плюс якісь параметри) і текстовий ідентифікатор (наприклад, IRQL_NOT_LESS_OR_EQUAL), а також рекомендації користувачеві по можливих способах усунення причин збою. У ряді випадків у тексті Blue Screen of Death може згадуватися ім'я файлу або пристрою, пов'язаного із причинами збою, і адреса пам'яті, по якому виникла проблема.

Усього стоп-кодів біля 200, докладно з ними можна познайомитися в документі Error and Event Messages із складу Windows 2000 Server Resource Kit . Розглянемо найпоширеніші  Blue Screen of Death:

KMODE_EXCEPTION_NOT_HANDLED - процес режиму ядра спробував виконати неприпустиму або невідому процесорну інструкцію. Може бути пов'язаний з несумісністю "заліза", несправністю устаткування, помилками в драйвері або системній службі;

NTFS_FILE_SYSTEM - збій при виконанні коду драйвера файлової системи ntfs.sys. Причиною може бути порушення цілісності даних на жорсткому диску (збійний кластер) або в пам'яті, пошкодження драйверів IDE або SCSI;

DATA_BUS_ERROR - в оперативній пам'яті виявлена помилка парності. Причина: дефектне або несумісне устаткування, наприклад, збій у мікросхемі кеш-пам’яті другого рівня, у відеопам'яті. Також збій може бути пов'язаний з некоректно працюючим або невірно сконфігурованим  драйвером, зі збоєм на жорсткому диску;

IRQL_NOT_LESS_OR_EQUAL - процес режиму ядра спробував звернутися до області пам'яті, використовуючи неприпустимо високий для нього рівень IRQL (Interrupt Request Level). Може бути викликаний помилками в драйвері, системній службі, BIOS або несумісним драйвером, службою, програмним забезпеченням (наприклад, антивірусом);

PAGE_FAULT_IN_NONPAGED_AREA – дані, що запитувались, відсутні в пам'яті (наприклад, система шукає потрібні дані у файлі підкачування, але не знаходить їх). Звичайно пов'язаний зі збоєм устаткування (дефектна пам'ять), порушенням файлової системи, помилкою системної служби або антивірусу;

KERNEL_STACK_INPAGE_ERROR - не вдається прочитати з файлу підкачування у фізичну пам'ять сторінку пам'яті. Причини: дефектний сектор файлу віртуальної пам'яті, збій контролера жорстких дисків, недостатньо місця на диску, неправильне підключення жорсткого диска, конфлікт переривань, дефект ОЗП, вірус;

MISMATCHED_HAL - рівень апаратних абстракцій (HAL) і ядро системи не відповідають типу комп'ютера. Найчастіше пов'язаний із ситуацією, коли в однопроцесорну систему встановлюють другий процесор, забуваючи вручну обновити HAL і ntoskrnl. Може також бути викликаний розбіжністю версій hal.dll і ntoskrnl.exe;

KERNEL_DATA_INPAGE_ERROR - не вдається прочитати у фізичну пам'ять сторінку даних. Причини - дефектний сектор файлу віртуальної пам'яті, збій контролера жорстких дисків, збій оперативної пам'яті, вірус, збій дискового контролера, дефектна оперативна пам'ять;

INACCESSIBLE_BOOT_DEVICE - у процесі завантаження ОС не змогла одержати доступ до системного розділу. Причин цього розповсюдженого збою можуть бути:

  • дефектний завантажувальний диск або дисковий контролер; несумісність устаткування;
  • завантажувальний вірус;
  • помилка у файловій системі, наприклад, у таблиці розділів (Partition Table);
  • ушкодження або відсутність необхідного при завантаженні файлу, наприклад, NTLDR;
  • відсутність драйвера контролера жорстких дисків або невідповідність поточного драйвера встановленому устаткуванню;
  • включений в BIOS режим DMA;
  • включений в CMOS Setup режим зміни букв дисководів DRIVE SWAPPING;
  • конфлікт розподілу ресурсів між дисковим контролером і іншим пристроєм;
  • ушкодження даних у системному реєстрі  про драйвера; установка системи в розділ за межами перших 1024 циліндрів жорсткого диска; помилка у файлі boot.ini;

UNEXPECTED_KERNEL_MODE_TRAP - виникнення пастки (trap) ядром або фатальна помилка (типу ділення на нуль). Несправність устаткування або збій програмного забезпечення;

STATUS_SYSTEM_PROCESS_TERMINATED - збій у службі, що працює в режимі користувача. Збій може бути пов'язаний з некоректною роботою прикладних програм, драйверів, сторонніх системних служб;

STATUS_IMAGE_CHECKSUM_MISMATCH - ушкоджений або загублений файл драйвера або системної бібліотеки. Може бути викликаний збоєм файлової системи або випадковим видаленням системного файлу.

Виходячи із цих даних і варто планувати процес пошуку причин збоїти, що може включати:

-         видалення застарілих або несумісних додатків;

-         видалення драйверів, що не мають цифрового підпису;

-         відновлення програмного забезпечення й драйверів устаткування;

-         видалення несумісного устаткування;

-         перевірка файлової системи;

-         сканування антивірусом;

-         перевірка системних файлів за допомогою утиліти sfc.exe (команда sfc /scannow);

-         тестування або заміна пам'яті;

-         установка останніх оновлень і патчів операційної системи й програмного забезпечення;

-         зміна настройки CMOS Setup, наприклад, відключення кешування або режиму DMA;

-         відновлення головного завантажувального запису (MBR) і системного завантажника Windows NT;

-         перевірка правильності підключення дисків, дискових контролерів і SCSI-адаптерів;

-         відмова від розгону; переустановка системи.

Останнім часом дуже часто оперативна пам'ять є причиною проблем багатьох користувачів. В особливо важких випадках операційна система видає  Blue Screen of Death відразу ж після завантаження або безпосередньо в її процесі, і немає ніякої можливості зайнятися пошуком причин збою, провести діагностику або видалити проблемний драйвер.