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

Najsłynniejsze błędy programistyczne [cz. 1]14.02.2013 12:30
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.

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.

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.

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.

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.

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
Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.