

Niebieski ekran systemu Windows stał się synonimem braku stabilności pracy oprogramowania. Szczególnie dotkliwie odczuwali jego obecność użytkownicy mieszanych, 16/32-bitowych wersji Windows, w których wystarczył niewielki błąd w aplikacji lub sterowniku urządzenia, by system przy byle operacji wyświetlał komunikat o błędzie, rzadko tylko pozwalając kontynuować pracę.
W pełni 32-bitowe wersje Windows, poczynając od Windows NT 3.1, w porównaniu do wywodzących się z czasów systemu MS-DOS braci od razu wydały się nieporównywalnie bardziej stabilne. Wiele instalacji tych systemów pracowało tygodniami i miesiącami bez potrzeby restartowania komputera. Nie ma jednak oprogramowania idealnego i również w ich przypadku – szczególnie, jeżeli sprzęt, na którym działały był niesprawny – użytkownicy od czasu do czasu mogli widzieć dalece bardziej widowiskowy, bo zapełniony gęstymi rzędami szesnatkowych liczb niebieski ekran śmierci (ang. Blue Screen of Death, BSOD).

„Niebieski ekran śmierci” systemu operacyjnego Windows NT 4.0
Pojawienie się na ekranie przedstawionego na powyższym obrazku niebieskiego komunikatu o błędzie skutecznie uniemożliwia dalsze korzystanie z komputera. Jedynym, co można zrobić po jego ujrzeniu jest ponowne uruchomienie komputera. Dzieje się tak, ponieważ Windows NT i pochodne wyświetlają niebieski ekran tylko i wyłącznie w momencie wykrycia błędu zagrażającego integralności danych lub niszczącego system operacyjny; nigdy nie towarzyszy on błędom mniejszej rangi. Użytkownik powinien wiedzieć, że błąd wystąpił (stąd jego trwałość — można się go pozbyć tylko restartując komputer) i otrzymać dostatecznie dużo informacji na jego temat (stąd mnóstwo liczb i napisów, pozwalających doświadczonym administratorom odkryć przyczynę błędu).
Firma Microsoft uświadomiła sobie jednak, że permanentność niebieskiego ekranu zmniejsza dostępność systemu. Jeżeli niewielki błąd w sterowniku urządzenia spowoduje awarię systemu po wielu miesiącach ciągłej pracy serwera to równie istotne co odszukanie i usunięcie przyczyny jest jak najszybsze przywrócenie dostępności serwera. Awaria w sobotni wieczór w odległej serwerowni jest zmorą administratorów i dlatego w jednym z dodatków Service Pack do systemu Windows NT 4.0 wprowadzono możliwość automatycznego ponownego uruchomienia komputera w przypadku wystąpienia błędu krytycznego. Po awarii zostaje wpis w logu systemowym, a serwer uruchamia się ponownie w nadziei, że błąd był przypadkowy, trudny do zreplikowania i nie wystąpi od razu ponownie (co jest dobrym założeniem w przypadku błędów programowych, choć złym jeżeli przyczyną niebieskiego ekranu była trwała awaria sprzętu).
Wprowadzając tę opcję założono słusznie, że jest ona potrzebna przede wszystkim wysoce dostępnym serwerom, w przypadku których każde pięć minut przestoju przynosi liczone twardą walutą straty. Z tego powodu bezpośrednio po instalacji dodatku Service Pack komputery z systemem NT 4.0 Workstation zachowywały się jak dotychczas (zatrzymując się na niebieskim ekranie, by pozwolić użytkownikowi natychmiast dowiedzieć się o błędzie), natomiast serwery NT 4.0 Server aktywowały opcję automatycznego restartu; w końcu ich administratorzy i tak muszą od czasu do czasu przeglądać logi systemu i sprawdzać czas jego ostatniego uruchomienia, więc błąd nie pozostałby niewykryty. Oczywiście w razie potrzeby w obu przypadkach ustawienie opcji mogło zostać zmienione w sposób bardziej odpowiadający administratorowi systemu, jednak domyślny wybór był zdecydowanie logiczny.
W czasie prac nad systemem Windows 2000 (i kolejnymi) firma Microsoft wprowadziła wiele udoskonaleń zwiększających niezawodność systemu i sterowników — w tym narzędzia wspomagające niezależnych autorów w procesie testowania odporności ich kodu pracującego w trybie jądra na różnego typu sytuacje ekstremalne. Mimo to problem niebieskich ekranów nie zniknął całkiem, dość jest bowiem na świecie programistów (nawet w poważnych firmach), dla których niezbyt istotne jest testowanie efektów swojej pracy. Nawet Windows XP i Windows 2003 można zmusić do wyświetlenia niebieskiego ekranu — jest to po prostu nieco trudniejsze, niż we wcześniejszych wersjach.
Niestety, podniesienie poziomu stabilności spowodowało, że programiści pracujący nad systemem Windows XP stwierdzili, że również użytkownicy domowi tego systemu powinni nie odczuwać przerw w jego pracy i przyjęli, że domyślną wartością opcji automatycznego restartu po wystąpieniu niebieskiego ekranu jest zawsze wartość „włączona”. Chcieli dobrze, nie przewidzieli jednak najwyraźniej, że rynek – jak zawsze wcześniej – zostanie zalany niskiej jakości sterownikami i niesprawnym, źle poskładanym sprzętem komputerowym. Wielu użytkowników Windows psioczy potem na Microsoft, żaląc się na grupach dyskusyjnych „mój komputer bez przerwy się restartuje, co za żałosny system operacyjny!”.
Zgodzisz się chyba, że w przypadku domowego komputera, zdecydowanie bardziej niż serwery narażonego na korzystanie ze sprzętu o niskiej cenie, obsługiwanego przez wypuszczone „na szybko”, nieprzetestowane sterowniki, bardziej opłaca się pokazać użytkownikowi komunikat „ten sterownik jest do niczego” lub „coś jest nie tak z komputerem, sprawdź sprzęt” (choćby zakamuflowany kodem), niż restartować komputer licząc na to, że przyczynę niespodziewanego restartu znajdzie on w logu systemowym (który z początkujących użytkowników Windows wie, jak wyświetlić jego zawartość!). Z tego powodu pierwszą zmianą, jaką polecam każdemu dotkniętemu przez problemy ze stabilnością systemu, jest wyłączenie opcji automatycznego restartu systemu.
Aby tego dokonać, naciśnij kombinację klawiszy Windows+Break, by otworzyć okno dialogowe właściwości systemu (uzyskasz do niego dostęp również z Panelu sterowania systemu Windows, poprzez ikonę System), a następnie przejdź do zakładki Zaawansowane i w sekcji Uruchamianie i odzyskiwanie kliknij przycisk Ustawienia:
W oknie dialogowym Uruchamianie i odzyskiwanie, które się w tym momencie pojawi, usuń znacznik z pola Automatycznie uruchom ponownie. Aby oszczędzić czas i miejsce na dysku twardym wyłącz również opcję Wyślij alert administracyjny, a z listy Zapisywanie informacji o debugowaniu wybierz pozycję (brak) — i tak nie dysponujesz narzędziami umożliwiającymi analizowanie zrzutu zawartości pamięci fizycznej w momencie wystąpienia błędu. Zaznaczona powinna być jedynie opcja Zapisz zdarzenie do dziennika systemowego — dzięki temu w logach systemowych pozostaną informacje o wszystkich nieprawidłowościach w działaniu systemu, co może być szczególnie przydatne jeżeli komputer, który konfigurujesz będzie używany przez kogoś innego:
Kliknij teraz dwukrotnie OK, aby pozamykać okna dialogowe zatwierdzając poczynione wybory, a od tego momentu komputer będzie informował o każdej awarii systemu niebieskim ekranem z kodem błędu oraz nazwą problematycznego sterownika, zamiast się tylko „po cichu” uruchamiać od nowa:

Niebieski ekran systemu operacyjnego Windows XP
Na koniec — tabela opisująca kilka najczęściej pojawiających się błędów krytycznych systemów Windows z rodziny NT. Przy każdej pozycji znajdziesz szesnastkowy kod błędu, wewnętrzną nazwę błędu oraz krótki opis z listą możliwych przyczyn jego wystąpienia. Obyś nie musiał nigdy korzystać z tej tabeli!
| Kod i oznaczenie literowe | Wyjaśnienie |
|---|---|
| 0x0000000A IRQL_NOT_LESS_OR_EQUAL |
Wywołanie którejś z funkcji systemowych nastąpiło z niewłaściwego stopnia uprzywilejowania kodu. Tego typu usterka może być spowodowana błędem w oprogramowaniu, jednak najczęściej sygnalizuje przekłamywanie danych przez pamięć operacyjną, zbyt szybką pracę któregoś elementu lub przegrzewanie się składników komputera. |
| 0x000000D1 DRIVER_IRQL_NOT_ LESS_OR_EQUAL |
Jak wyżej, ale niewłaściwa próba zmiany poziomu dostępu nastąpiła z poziomu kodu sterownika urządzenia. |
| 0x00000050 PAGE_FAULT_IN_ NONPAGED_AREA |
Procesor odebrał informację o potrzebie wprowadzenia danych do obszaru pamięci, który według systemu operacyjnego nie może być zmieniony w ten sposób lub jest w ogóle nieużywany. Najczęściej świadczy to o przekłamywaniu danych przez zbyt szybko pracujące, uszkodzone lub przegrzewające się elementy komputera. |
| 0x0000009C MACHINE_CHECK_EXCEPTION |
Błąd występujący w efekcie zgłoszenia przez jeden z procesorów komputera problemu sprzętowego, takiego jak uszkodzenie jednego z bloków procesora, przegrzanie któregoś z układów lub wykrycie niekorygowalnego przekłamania danych na jednej z magistral. Pojawienie się tego kodu błędu sygnalizuje konieczność zdiagnozowania usterki i dokonania wymiany uszkodzonej części. |
| 0x00000023 FAT_FILE_SYSTEM 0x00000024 NTFS_FILE_SYSTEM 0x00000026 CDFS_FILE_SYSTEM |
Błędy występujące w momencie wykrycia błędu w sterowniku systemu plików FAT, NTFS lub CDFS (obsługującym płyty CD-ROM). Błąd taki może świadczyć o niekompatybilności napędu dyskowego z płytą główną, awarii urządzenia, zakłóceniu jego pracy przez zbyt silne podkręcenie magistrali lub wystąpienie przekłamań w systemie plików (spowodowanych choćby podkręceniem procesora, pamięci operacyjnej lub magistrali). |
| 0x00000053 NO_BOOT_DEVICE |
Błąd spowodowany brakiem możliwości odszukania systemu operacyjnego na dysku twardym. Najczęściej powodem jest uszkodzenie zapisanych danych na dysku twardym lub odłączenie dysku, na którym zainstalowane są pliki systemu operacyjnego. |
| 0x0000008E KERNEL_MODE_EXCEPTION_ NOT_HANDLED |
Błąd spowodowany pojawieniem się sytuacji wyjątkowej (niedozwolona operacja, próba uzyskania dostępu do nieistniejącego fragmentu pamięci operacyjnej) w czasie wykonywania kodu jądra systemu. Tego typu błędy pojawiają się prawie zawsze na skutek uszkodzenia pamięci operacyjnej lub procesora lub przekroczenia ich bezpiecznych parametrów pracy (zbyt silnego podkręcenia). Ewentualnie powodem powtarzających się w określonych sytuacjach błędów o tym kodzie może być błąd w sterowniku urządzenia, którego nazwa podana jest w komunikacie błędu. |
| 0x0000004E PFN_LIST_CORRUPT |
Błąd spowodowany uszkodzeniem wewnętrznych struktur opisujących operacje wejścia/wyjścia. Przyczyną uszkodzenia może być błąd sterownika urządzenia lub – częściej – uszkodzona lub zbyt mocno podkręcona pamięć operacyjna lub procesor. |
Więcej informacji o błędzie IRQL_NOT_LESS_OR_EQUAL znajdziesz w archiwalnych wpisach mojego blogu.
Więcej informacji o sposobach konfigurowania komputera i diagnozowania jego sprawności sprzetowej znajdziesz w książce mojego autorstwa pod tytułem Podkręcanie procesorów: Ćwiczenia.