Drobne bugi – wielkie katastrofy. Najsłynniejsze programistyczne błędy w historii (cz. I)24 lipca 2017

Błąd w pracy

Z tego wpisu dowiesz się:

  • dlaczego praca programisty bywa bardziej odpowiedzialna i stresująca niż mogłoby się wydawać?
  • do czego doprowadzić może niewykryty bug w kodzie?
  • jakie są najbardziej znane programistyczne błędy w historii?


Żyjemy w czasach, w których coraz trudniej wyobrazić sobie branżę, instytucję, firmę czy urządzenie, które nie korzystałoby z oprogramowania komputerowego. Na co dzień nie zdajemy sprawy, jak wiele zależy od tego, czy stworzony przez developera kod będzie wolny od bugów. Oczywiście błąd w sztuce może zdarzyć się każdemu programiście i w większości wypadków skutki tego da się w mniej lub bardziej prosty sposób naprawić. Zdarzają się jednak sytuacje, kiedy niedopatrzenia programisty mogą mieć tragiczne i kosztowne skutki. Oto subiektywny przegląd najbardziej spektakularnych programistycznych błędów w historii.

Therac-25

Therac-25 to kanadyjskie urządzenie stosowane w latach 80. do radioterapii nowotworów. Między 1985 a 1987 rokiem odnotowano przynajmniej 6 przypadków, w których chorzy otrzymali niemal 100 razy silniejszą od zalecanej dawkę promieniowania. Efektem tego była choroba popromienna, w wyniku której pięciu pacjentów zmarło. Jak wykazało śledztwo, powodem tej tragedii był błąd programisty. Warta 1 mln dolarów maszyna została wyposażona w stworzone przez pojedynczą osobę oprogramowanie, w którym zabrakło jednego niezwykle istotnego wiersza kodu. Ponadto okazało się, że nie przeprowadzono dokładnych testów a w dodatku kod został zaimplementowany do nowszego modelu urządzenia niż pierwotnie zakładano.

Rakiety PatriotRakieta

25 lutego 1991 roku podczas wojny w Zatoce Perskiej iracka rakieta Scud trafiła w amerykańskie baraki w Dhahran zabijając 28 żołnierzy. Jak do tego doszło, skoro bezpieczeństwa bazy pilnowało aż 6 baterii systemu przeciwrakietowego Patriot znanego ze swojej skuteczności? Jak się okazało i tym razem zawinił bug. Otóż rakiety miały drobny problem z zegarem systemowym. Uruchomienie i działanie rakiet przez 100 godzin bez przerwy opóźniało go o 1/3 sekundy. Wada ta została przez wojsko izraelskie wykryta dwa tygodnia wcześniej. Jako tymczasowe rozwiązanie producent zalecił cykliczne restarty systemu w celu ponownej kalibracji zegara. Niestety operatorzy zaniechali tego środka, przez co Patriot nie był w stanie właściwie namierzyć rakiety Scud. Co ciekawe łatka programistyczna do oprogramowania pojawiła się dzień po tragedii.

Ariane-5

Niechlubny i kosztowny błąd programisty ma na swoim koncie również Europejska Agencja Kosmiczna (ESA). Otóż 4 lipca 1996 roku odbywał się, z dumą transmitowany, inauguracyjny lot Ariane -5. Niestety już 30 sekund po starcie rakieta zboczyła z kursu i zaczęła się rozpadać, po czym całkowicie eksplodowała. Na oczach zdumionych widzów 10 lat pracy i 7 mld dolarów, które włożono w budowę Ariane -5, obróciło się w zgliszcza. Co się okazało? Choć przed lotem próbnym przetestowano dokładnie cały sprzęt, nie przetestowano oprogramowania. Uznano, że nie ma takiej potrzeby, ponieważ w większości zostało ono skopiowane z Ariane -4, gdzie działał bez zarzutów. Niestety, Ariane 5 miał szybsze silniki niż jego poprzednik, przez co oprogramowanie generowało większe liczby. Nastąpił błąd konwersji danych między 64-bitowymi danymi zmiennoprzecinkowymi a 16-bitowymi całkowitymi. Wynik konwersji danych był zbyt duży i nastąpiło przepełnienie, wynikiem którego było zejście z toru i autodestrukcja rakiety. Porażce i kompromitacji można było zapobiec, gdyż istniał podprogram, który radził sobie z takimi problemami. Niestety podczas startu Ariane-5 był wyłączony.

W kolejnym wpisie weźmiemy pod lupę kolejne katastrofalne w skutkach błędy programistów, które niechlubnie zapisały się w historii: Drobne bugi – wielkie katastrofy. Najsłynniejsze programistyczne błędy w historii (cz. II).

Twoja opinia jest dla Nas Ważna

Oceń ten wpis
Prześlij nam swoje CV

Najnowsze oferty pracy:

Polecane wpisy na blogu:

Gentelmani rozmawiają o pieniądzach czyli jak negocjować wynagrodzenie

Szwecja – raj dla polskich programistów?

3 strategie, jak zatrzymać w firmie kluczowych pracowników IT

Kod pod specjalnym nadzorem czyli jak współpracować z programistą z zewnątrz

Metoda na lenia - 5 typów firmowych leserów

Najnowsze komentarze

Marek Dzimra
2017-11-02 13:50:29
Mirosław
2017-10-20 13:39:50
Madziak56
2017-10-01 19:55:25
Marek Dzimra
2017-09-05 09:38:05
Marek Dzimra
2017-08-03 15:17:36
muuu
2017-06-26 13:44:39
muuu
2017-06-26 13:32:22
Marcin Górnicki
2017-06-25 23:29:23
Marcin Górnicki
2017-06-25 23:28:25
Marcin Górnicki
2017-06-25 23:18:44
Może zainteresuje Cię również:
1 Szukasz specjalistów IT?
Oddzwonimy do Ciebie!