Blue Screen of Death (w skrócie BSoD) – komunikat błędu(inne języki) wyświetlany przez system operacyjnyWindows w chwili wystąpienia poważnego błędu systemowego. Występuje w sytuacji awarii, w wyniku której system osiągnął stan krytyczny niepozwalający na dalszą pracę – błąd sprzętu albo niespodziewane zakończenie krytycznego procesu.
Historia
Niebieskie ekrany błędów (znane również jako „niebieskie ekrany śmierci”) występują od czasów wersji beta systemu Windows 1.0; jeśli system Windows wykryje nowszą wersję systemu DOS niż spodziewana, wygeneruje niebieski ekran z białym napisem „Niepoprawna wersja DOS” (ang.Incorrect DOS version) przed normalnym uruchomieniem[1]. Jednak w wersji finalnej (wersja 1.01) taki ekran wyświetla przypadkowe znaki jako wynik błędów w kodzie odpowiedzialnym za logo Windows[1]. Nie jest to jednak ekran śmierci – w chwili crashu (awarii), Windows 1.0 zawiesza się albo kończy działanie i użytkownik wraca do DOS-u.
Windows 3.0 wykorzystuje tryb tekstowy do wyświetlania ważnych komunikatów systemowych, zwykle pochodzących od sterowników urządzeń w trybie rozszerzonym 386 lub innych sytuacji, w których nie można uruchomić programu. Windows 3.1 zmienił kolor tła z czarnego na niebieski. Windows 3.1 także wyświetla niebieski ekran w chwili naciśnięcia sekwencji klawiszyCtrl+Alt+Del przy braku zawieszonych aplikacji. Tak jak we wcześniejszych wersjach, Windows 3.x powraca użytkownika do DOS-u w przypadku szczególnie poważnego błędu.
Pierwszy niebieski ekran śmierci pojawił się w Windows NT 3.1[2] (pierwsza wersja z rodziny Windows NT, wydana w 1993 roku) i wszystkich kolejnych wydaniach. W pierwotnej wersji treść komunikatu rozpoczynała się od ***STOP:, stąd stał się znany pod określeniem „błędu stop”.
Przyczyną pojawienia się niebieskiego ekranu śmierci może być wadliwie napisany sterownik urządzenia lub uszkodzony sprzęt[3] – nieprawidłowo działające kości pamięci, problemy z zasilaczem, przegrzewanie się komponentów lub sprzęt o parametrach przekraczających określone specyfikacje. W czasach Windows 9x niekompatybilne biblioteki DLL lub błędy w jądrze systemu[4] również mogły powodować BSoD. Z powodu braków w stabilności oraz ochronie pamięci w Windows 9x BSoD był dużo częstszym zjawiskiem.
Nieprawidłowe przypisanie
4 września 2014 roku wiele serwisów internetowych, w tym Business Insider[5], DailyTech(inne języki)[6], Engadget[7], Gizmodo[8], Lifehacker[9], Neowin[10], Softpedia[11], TechSpot[12], The Register[13] i The Verge[14] nieprawidłowo przypisało autorstwo Blue Screen of DeathSteve’owi Ballmerowi, byłemu CEO (chief executive officerowi) Microsoftu, cytując artykuł Raymonda Chena, pracownika Microsoftu, zatytułowany „Who wrote the text for the Ctrl+Alt+Del dialog in Windows 3.1?”. Artykuł skupiał się na pierwszym menedżerze zadań w Windows 3.x, który miał podobny wygląd do BSoD[15]. W kolejnym artykule, opublikowanym 9 września 2014 roku, Raymond Chen odniósł się krytycznie wobec tego szeroko rozpowszechnianego błędu, przyznał się do zmiany wyglądu BSoD w Windows 95 oraz skrytykował BGR.com za „całkowicie sfabrykowany tekst i opublikowany jako prawdę”[16]. W późniejszym czasie Engadget uaktualnił swój artykuł celem naprostowania treści[7].
Formaty
Pierwotnie niebieski ekran śmierci wyświetlał srebrny tekst na tle o barwie błękitu królewskiego zawierający informacje o bieżących wartościach pamięci i rejestru. Począwszy od Windows Server 2012 (wydanego we wrześniu 2012 r.) Windows przyjął ceruleum jako kolor tła. Windows 11 początkowo używał czarnego tła, ale od kompilacji 22000.348[17] wykorzystuje ciemnoniebieskie[18]. Kompilacje testowe Windows 10, Windows 11 i Windows Server (dostępne w ramach programu Windows Insider) zawierają ciemnozielone tło zamiast niebieskiego[17][19][20].
Windows 95, 98 i ME renderują BSoD w trybie tekstowym 80×25. BSoD w rodzinie Windows NT początkowo używał trybu tekstowego 80×50 przy rozdzielczości ekranu 720×400 pikseli. BSoD w systemach Windows 2000, Windows XP, Vista i 7 używa rozdzielczości 640×480 pikseli. Windows 2000 wykorzystywał krój czcionki wbudowany w jądro, natomiast XP, Vista i 7 wyświetlają krój Lucida Console(inne języki). Windows 8 i Windows Server 2012 używają Segoe UI(inne języki). Na maszynach wyposażonych w Unified Extensible Firmware Interface (UEFI), BSoD wyświetlany jest na najwyższej dostępnej rozdzielczości ekranu. W przypadku jednostek wyposażonych w BIOS domyślnie używana jest rozdzielczość 1024×768 pikseli, jednakże mogą być one skonfigurowane do wyświetlania przy największej możliwej rozdzielczości (za pośrednictwem parametru highestmode programu BCDedit)[23]. Windows 10 w wersji 1607 i późniejszych korzysta z tego samego formatu co Windows 8 i dodatkowo zawiera kod QR prowadzący do strony pomocy technicznej Microsoftu próbującej krok po kroku znaleźć rozwiązanie problemu.
W rodzinie Windows NT niebieski ekran śmierci (występujący pod nazwą bug check w dokumentacji zestawu narzędzi dla programistów niezbędnego w tworzeniu aplikacji (ang.software development kit, SDK) Windows oraz zestawu narzędzi niezbędnego w tworzeniu sterowników (ang.driver development kit, DDK) pojawia się w sytuacji, gdy jądro lub sterownik urządzenia działający w trybie jądra napotyka na błąd, po którym nie może wznowić normalnej pracy. Zwykle dzieje się to w wyniku nieprawidłowej operacji. W takiej sytuacji jedyną bezpieczną czynnością, jaką może wykonać system, jest restart komputera. Może to doprowadzić do utracenia danych, jako że użytkownik nie ma możliwości dokonania zapisu.
Tekst na ekranie zawiera kod błędu oraz jego symboliczną nazwę (np. 0x0000001E, KMODE_EXCEPTION_NOT_HANDLED) razem z występującymi w nawiasach czterema wartościami zależnymi od rodzaju błędu, które mają ułatwić programistom wyeliminowanie błędów. W zależności od kodu błędu, może wyświetlić on adres komórki pamięci, w której doszło do wystąpienia błędu, a także nazwę pliku sterownika załadowanego do tego adresu. W Windows NT druga i trzecia część ekranu może zawierać informacje odpowiednio o wszystkich załadowanych sterownikach oraz zrzut stosu. Informacje o sterownikach wyświetlane są w trzech kolumnach; pierwsza z nich pokazuje bazowy adres sterownika, drugi datę utworzenia (zapisywaną w czasie uniksowym), z kolei trzecia nazwy sterowników[24]. Przy domyślnych ustawieniach Windows utworzy plik zrzutu pamięci w momencie wystąpienia błędu stop. Zależnie od wersji systemu, może być kilka różnych opcji zapisu zrzutu, od „minimalnego” (64 KB, wprowadzony w Windows 2000) do „pełnego zrzutu”, będącego praktycznie kopią całej zawartości pamięci fizycznej (RAM). Powstały w ten sposób plik można później przeglądać za pośrednictwem debuggera jądra. Dla systemów Windows używane są debuggery WinDbg oraz KD z zestawu Debugging Tools for Windows[25]. Debugger jest niezbędny do uzyskania śladu stosu i może być potrzebny do ustalenia prawdziwej przyczyny problemu; informacje wyświetlane na ekranie są ograniczone i mogą wprowadzić w błąd, ukrywając prawdziwą przyczynę. Standardowo, Windows XP jest skonfigurowany, żeby zapisywał jedynie minimalny plik zrzutu o wielkości 64 KB i natychmiastowo uruchamiał ponownie komputer. Ponieważ proces ten odbywa się bardzo szybko, użytkownik może dostrzec niebieski ekran jedynie przez ułamek sekundy lub nawet wcale. Okazjonalnie użytkownicy traktowali to jako losowy ponowny rozruch zamiast tradycyjnego błędu stop i byli świadomi zaistniałej sytuacji dopiero po restarcie systemu i powiadomienia o odzyskaniu sprawności po poważnym błędzie. Dzieje się tak wyłącznie, gdy komputer ma włączoną opcję automatycznego restartu, którą można dezaktywować za pomocą Panelu sterowania.
Microsoft Windows może być skonfigurowany w taki sposób, aby w czasie rzeczywistym przesyłał informacje do debuggera jądra(inne języki) uruchomionego na osobnym komputerze. W przypadku wystąpienia błędu stop w trakcie połączenia z debuggerem, Windows przerwie działanie i przełączy się na debuggera zamiast pokazać BSoD. Wtedy debugger może być wykorzystany do analizy zawartości pamięci i określenia źródła problemu.
BSoD może być wywołany z powodu krytycznego błędu programu rozruchowego, gdy system operacyjny nie może uzyskać dostępu do partycji rozruchowej z powodu nieprawidłowych sterowników, uszkodzonego systemu plików lub podobnych przyczyn. Związany z tym kod błędu ma oznaczenie STOP 0x0000007B (INACCESSIBLE_BOOT_DEVICE)[26]. W takich przypadkach nie jest tworzony zrzut pamięci. Ponieważ system nie może uruchomić się z dysku twardego, rozwiązanie problemu często wymaga użycia narzędzi znajdujących się na nośniku instalacyjnym systemu.
Szczegóły
Przed wydaniem Windows Server 2012 każdy BSoD wyświetlał nazwę zapisywaną dużymi literami (np. APC_INDEX_MISMATCH), kod błędu w zapisie szesnastkowym (np. 0x00000001) i cztery parametry. Ostatnie dwie części notacji przedstawiane są w następujący sposób[27]:
kod błędu (parametr 1, parametr 2, parametr 3, parametr 4) nazwa błędu
Zależnie od numeru i natury błędu, wszystkie, niektóre lub żaden z parametrów zawiera dane dotyczące tego, co i gdzie uległo awarii. Dodatkowo ekrany błędu pokazywały cztery akapity tekstu ogólnie wyjaśniającego, udzielającego porady i zawierającego dane techniczne takie jak nazwa pliku wywołującego ekran i adresy pamięci.
Wraz z wydaniem systemu Windows Server 2012 zmieniono wygląd BSoD, usuwając przedstawione powyżej dane na rzecz nazwy błędu i zwięzłego opisu. Windows 8 dodał emotikonę smutku (nie dotyczy to japońskiego wydania). Kod błędu wyrażony zapisem szesnastkowym (heksadecymalnym) i parametry wciąż można odczytać w Podglądzie zdarzeń(inne języki) lub plikach zrzutów pamięci. Od kompilacji 14393 systemu Windows 10 ekran śmierci zawiera kod QR dla szybkiego rozwiązywania problemu. W kompilacji 19041 dokonano zmiany frazy „Twój komputer napotkał problem” na „Twoje urządzenie napotkało problem”.
Systemy Windows 9x często doświadczają niebieskich ekranów śmierci – jest to główny sposób, w jaki wirtualne sterowniki urządzeń informują użytkownika o napotkanych błędach. Ta wersja BSoD, określana wewnętrznie jako _VWIN32_FaultPopup, daje użytkownikowi możliwość wyboru restartu komputera lub próby dalszej pracy z systemem. Zachowanie to jest przeciwieństwem do wersji BSoD z rodziny Windows NT, gdzie użytkownik nie ma możliwości dalszego korzystania z komputera do momentu jego wyłączenia lub ponownego rozruchu (przeważnie automatycznego).
Najczęściej spotykany BSoD ma układ 80×25, który jest formą przekazu przez system operacyjny o przerwaniu spowodowanym wyjątkiem procesora; jest to bardziej poważna forma komunikatu o ogólnym błędzie ochrony. Komunikat podaje adres pamięci i rodzaj błędu określony zapisem heksadecymalnym od 00 do 11 (0–17 w systemie dziesiętnym). Poniżej znajdują się zdefiniowane kody błędu[28]:
problemy związane z niekompatybilnymi wersjami DLL: Windows wczytuje do pamięci biblioteki DLL, gdy są potrzebne przez dane programy; jeżeli ich wersje zostają zmienione, następnym razem, gdy aplikacja załaduje bibliotekę, może być ona inna niż ta, jakiej spodziewa się program. Im więcej zainstalowanych w systemie aplikacji, tym częściej dochodzi do niekompatybilności.
Uszkodzony sprzęt także może przyczyniać się do BSoD.
W systemach Windows 95 i Windows 98 BSoD pojawia się przy próbie odczytu danych ze ścieżek odwołujących się do zastrzeżonych nazw urządzeń (np. C:\con\con, C:\aux\aux, C:\prn\prn). Ścieżki te mogły zostać umieszczone w kodzie źródłowym strony internetowej celem crashu komputerów odwiedzających stronę. 16 marca 2000 roku Microsoft opublikował specjalną łatkę[29] eliminującą błąd.
Pojawienie się ekranu błędu w Windows 9x wydarzyło się podczas prezentacji wersji beta Windows 98 prowadzonej przez Billa Gatesa na targach COMDEX w dniu 20 kwietnia 1998 roku: demonstracyjny komputer wyświetlił BSoD, gdy asystent Gatesa, Chris Capossela, podłączył skaner do komputera celem zademonstrowania obsługi urządzeń Plug and Play przez Windows 98. Zdarzenie to spowodowało burzę oklasków wśród uczestników, na co w odpowiedzi Gates stwierdził (po dłuższej chwili) „Zapewne dlatego jeszcze nie wydaliśmy Windows 98” (ang.That must be why we're not shipping Windows 98 yet.)[30].
Windows CE
Najprostsza wersja niebieskiego ekranu występuje w Windows CE (oprócz Pocket PC 2000 i Pocket PC 2002). Ekran śmierci w Windows CE 3.0 jest zbliżony do tego z Windows NT.
↑ abWhy does Windows 1.01 crash at the splash screen? [online], Retro Computing, 30 sierpnia 2021, Cytat: In the final release of Windows, these detailed messages were hastily removed. The code that would print them, however, was not, and this is what produces the garbage output.(ang.).
↑BradB.SamsBradB., Steve Ballmer wrote the BSOD text, [w:] Neowin, Neowin LLC, 4 września 2014 [dostęp 2022-07-26] [zarchiwizowane z adresu 2014-09-08](ang.).???
↑ abcTomT.WarrenTomT., Microsoft's Blue Screen of Death is changing to black in Windows 11, [w:] The Verge, Vox Media, 1 lipca 2021 [dostęp 2022-07-26], Cytat: While Microsoft is switching to a Black Screen of Death in Windows 11, the screen is identical to the one found in Windows 10 otherwise. The sad face remains, as does the stop code and crash dump. The current preview of Windows 11 includes a green BSOD, a color that Microsoft has been using for Windows Insider builds since 2016.(ang.).???
↑ abScottS.SeelyScottS., Windows Shell Programming, Upper Saddle River, NJ: Prentice Hall PTR, 2000, s. 232–233, ISBN 978-0-13-025496-2, OCLC44090524, Cytat: BSOD stands for Blue Screen Of Death. One can customize the colors of this screen by setting a couple of variables in the 386Enh section of SYSTEM.INI: MessageTextColor and MessageBackColor. The user can only customize the BSOD under Windows 3.1, 95, and 98. These changes do not work under the Windows NT variants.(ang.).