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

Nowy model AI przewiduje choroby z wyprzedzeniem 10 lat
Nowy model AI przewiduje choroby z wyprzedzeniem 10 lat
Tajemniczy "ciemny tlen" odkryty na dnie Pacyfiku
Tajemniczy "ciemny tlen" odkryty na dnie Pacyfiku
Nowa metoda recyklingu plastiku. Rozłoży nawet PVC
Nowa metoda recyklingu plastiku. Rozłoży nawet PVC
Jest ich mniej. Nawet w środowiskach, gdzie nie ingeruje człowiek
Jest ich mniej. Nawet w środowiskach, gdzie nie ingeruje człowiek
Sen i ryzyko demencji. Są nowe odkrycia
Sen i ryzyko demencji. Są nowe odkrycia
Do 2500 r. może jej już nie być. Alarmujące prognozy dla syberyjskiej tundry
Do 2500 r. może jej już nie być. Alarmujące prognozy dla syberyjskiej tundry
Galaktyka Cygaro. Miejsce, gdzie gwiazdy rodzą się szybciej
Galaktyka Cygaro. Miejsce, gdzie gwiazdy rodzą się szybciej
Tak formują się planety. Odkrycie naukowców to potwierdza
Tak formują się planety. Odkrycie naukowców to potwierdza
Ludzie od zawsze o tym marzyli. Pojawia się jednak pewien problem
Ludzie od zawsze o tym marzyli. Pojawia się jednak pewien problem
Masz głośnych sąsiadów? Szwajcarzy znaleźli na to sposób
Masz głośnych sąsiadów? Szwajcarzy znaleźli na to sposób
Mikroplastik i zdrowie. To konsekwencje zanieczyszczenia środowiska
Mikroplastik i zdrowie. To konsekwencje zanieczyszczenia środowiska
Tajemnicza rotacja. Czy Wszechświat znajduje się w czarnej dziurze?
Tajemnicza rotacja. Czy Wszechświat znajduje się w czarnej dziurze?