Najsłynniejsze błędy programistyczne [cz. 1] 

Błąd w kodzie to z reguły drobnostka, którą można naprawić łatką. Co jednak zrobić, gdy od pojedynczego symbolu zależy życie i zdrowie ludzi oraz cenny sprzęt? Mariner 1 uległ katastrofie z powodu brakującego znaku "‾". Niedopracowane oprogramowanie do maszyny do naświetlań kosztowało życie 5 osób. Oto przegląd największych wpadek programistycznych.

Najsłynniejsze błędy programistyczne [cz. 1] 1
Mariusz Kamiński

Błąd w kodzie to z reguły drobnostka, którą można naprawić łatką. Co jednak zrobić, gdy od pojedynczego symbolu zależy życie i zdrowie ludzi oraz cenny sprzęt? Mariner 1 uległ katastrofie z powodu brakującego znaku "‾". Niedopracowane oprogramowanie do maszyny do naświetlań kosztowało życie 5 osób. Oto przegląd największych wpadek programistycznych.

Mariner 1

Żeglarz nr 1 kosztował w 1962 r. około 18,5 mln dol. Jak na te czasy była to kolosalna suma. Mariner 1 był wspólnym przedsięwzięciem NASA, JPL i USAF. Miała to być pierwsza misja planetarna USA i ciśnienie polityczne było przeogromne. Pośpiech i chęć wykazania się wzięły górę nad rozsądkiem i starannością, co poskutkowało najbardziej groteskową katastrofą w dziejach lotów kosmicznych.

Start rakiety odbył się 22 lipca. Jej celem była planeta Wenus, a znajdująca się na pokładzie sonda kosmiczna miała dostarczyć cennych danych na temat siostry Ziemi. Po 294 s lotu przesłano do rakiety polecenie autodestrukcji. Jeszcze wtedy nieznana usterka sprawiła, że Atlas Agena B zboczyła z kursu i kontynuowała zmianę kierunku lotu w zadziwiający sposób.

Najsłynniejsze błędy programistyczne [cz. 1] 2

Przyczyny katastrofy były dwie. Co ciekawe, gdyby ta pierwsza się nie pojawiła, to druga również nie miałaby miejsca i wszystko poszłoby zgodnie z planem. Zaraz po starcie okazało się, że antena rakiety praktycznie nie odbiera żadnych sygnałów, w tym poleceń nawigacyjnych z centrum kontroli lotów. Konstruktorzy przygotowali się jednak na taką ewentualność i zawczasu opracowali plan B. Plan ten nakazywał komputerowi pokładowemu odcięcie niedokładnych sygnałów z anteny i uruchomienie oprogramowania awaryjnego, które miało kontynuować lot zgodnie z wcześniej ustalonym planem.

Tak też się stało, ale ku zgrozie zgromadzonych rakieta zaczęła się zachowywać bardzo dziwnie. Rozpoczął się gwałtowny cykl szybkich i znacznych korekt kursu lotu. Rakieta nie zdołała wyrównać lotu i kontrola misji była zmuszona zniszczyć pojazd przed uderzeniem w ziemię.

Po długim dochodzeniu okazało się, że w programie awaryjnym był malutki błąd w zapisie równania. Prawidłowa wersja widoczna jest poniżej. W oprogramowaniu zabrakło tej małej kreski na samej górze.

Najsłynniejsze błędy programistyczne [cz. 1] 3

Kreska ta oznacza funkcję wygładzania. Bez niej wszystkie zmiany wartości prędkości były traktowane przez system nawigacyjny jako poważne i wywoływały gwałtowną korektę kursu. Arthur C. Clark nazwał tą kreskę "najdroższym dywizem w historii".

Therac-25

Historia kanadyjskiej maszyny do radioterapii nowotworów jest obecnie lekturą obowiązkową podczas studiów nad bezpieczeństwem systemów informatycznych, zwłaszcza związanych z medycyną. Tak jak w przypadku błędu Marinera usterka mogła pozostać w ukryciu przez wiele lat i nie wyrządzić nikomu krzywdy. Tak się jednak nie stało.

Najsłynniejsze błędy programistyczne [cz. 1] 4

Maszyna miała dwa tryby działania. Pierwszy, niskoenergetyczny, bazował na strumieniu elektronów (od 5 MeV) i działał w krótkich interwałach. Drugi nazywał się Megavolt X-ray i emitował megawoltowe promieniowanie rentgenowskie (do 25 MeV).

Aby wywołać błąd, należało w ciągu 8 s wcisnąć następującą kombinację klawiszy na terminalu VT-100: "X" (pierwszy, przypadkowy wybór trybu "25MV photon"), "strzałka w górę", "E" (prawidłowy, poprawiony wybór trybu "25 MeV electron"), Enter.

Kombinacja ta powodowała uruchomienie wysokoenergetycznego trybu promieniowania bez przesłonięcia głowicy filtrem dyspersyjnym. W efekcie pacjent otrzymywał 100 razy silniejszą, skupioną wiązkę promieniowania skierowaną w jeden punkt na ciele. Jeden z pacjentów opisał to jako "porażenie prądem o niebywałym natężeniu".

Błąd pojawiał się przez zjawisko elektronicznego "hazardu". Dochodzi do niego wtedy, gdy informacja na wyjściu zależy od sekwencji i czasu wprowadzenia informacji na wejściu. W powyższej sytuacji sygnały wysyłane przez lekarza za pomocą terminalu były wprowadzone na tyle szybko, że ścigały się ze sobą o pierwszeństwo wpływu na działanie urządzenia.

Pięciu pacjentów zmarło na chorobę popromienną, a szósty doznał dotkliwych poparzeń. Dochodzenie w sprawie ujawniło poważne zaniedbania producenta - oprogramowanie było skopiowane z poprzednich, starszych modeli, a zabezpieczenia sprzętowe usunięte.

MIM-104 Patriot

Kolejny błąd programistyczny, który kosztował życie 28 żołnierzy. Tragedia rozegrała się w 1991 r., gdy żołnierze przebywali w jednostce wojskowej Dharhan, w Arabii Saudyjskiej. Rakieta Scud uderzyła w zabudowania, powodując straszliwe zniszczenia i śmierć.

Rakiety Scud nie były wówczas problemem dla armii amerykańskiej. Nad ich detekcją i unieszkodliwieniem czuwały rakiety przechwytujące Patriot. Jak się okazało, miały one drobny problem z zegarem systemowym.

Najsłynniejsze błędy programistyczne [cz. 1] 5

Bateria Patriot była uruchomiona i działała bez przerwy przez 100 godz. Przez ten czas zegar systemu opóźnił się o 1/3 s. Ten niewielki ułamek spowodował, że system radarowy wykrył nadlatującą rakietę, ale przeskanował niewłaściwy obszar nieba i nie potwierdził zagrożenia. Patriot nie wystartował, a Scud uderzył w bazę.

Co ciekawe, 14 dni wcześniej wojsko izraelskie wykryło ten problem i poinformowało producenta oprogramowania (PATRIOT Project Office) o wadzie. Jako tymczasowe rozwiązanie zaproponowano cykliczne restarty systemu w celu ponownej kalibracji zegara. Niestety, operatorzy w Dharhan nie wiedzieli, jak często mają je wykonywać, i zaniechali stosowania tego środka. Dzień po tragedii pojawiła się łatka programistyczna i problem przestał istnieć. O jeden dzień za późno.

Źródło artykułu: WP Gadżetomania
Wybrane dla Ciebie
Ten "trick" to pułapka. Możesz uszkodzić szyby
Ten "trick" to pułapka. Możesz uszkodzić szyby
Wyszli na spacer. Wrócili bogatsi o 80 tys. zł.
Wyszli na spacer. Wrócili bogatsi o 80 tys. zł.
OpenAI szykuje urządzenie z ChatGPT. Ma mieć formę długopisu
OpenAI szykuje urządzenie z ChatGPT. Ma mieć formę długopisu
Kiedy urodził się Jezus? Historycy mówią o jednym
Kiedy urodził się Jezus? Historycy mówią o jednym
Aparat leżał w rzece przez lata. Udało się odzyskać zdjęcia
Aparat leżał w rzece przez lata. Udało się odzyskać zdjęcia
Ołów, ścieki i tony odchodów. Mieszkańcy polegają na tej rzece
Ołów, ścieki i tony odchodów. Mieszkańcy polegają na tej rzece
Samsung zapowiada lodówki z Gemini. Sztuczna inteligencja Google'a trafi do kuchni
Samsung zapowiada lodówki z Gemini. Sztuczna inteligencja Google'a trafi do kuchni
PKO BP ostrzega przed oszustami. Zalecenia dla klientów
PKO BP ostrzega przed oszustami. Zalecenia dla klientów
Co tam się dzieje? Niezwykły wycinek lodu może rozwiązać tajemnicę
Co tam się dzieje? Niezwykły wycinek lodu może rozwiązać tajemnicę
Rzymianie wymyślili beton, który sam się naprawia? Nowe odkrycie
Rzymianie wymyślili beton, który sam się naprawia? Nowe odkrycie
Windows 11 z nową stroną do aktualizacji wszystkich aplikacji
Windows 11 z nową stroną do aktualizacji wszystkich aplikacji
Messenger zniknął z Windowsa. Oto rozwiązanie
Messenger zniknął z Windowsa. Oto rozwiązanie
MOŻE JESZCZE JEDEN ARTYKUŁ? ZOBACZ CO POLECAMY 🌟