Najgorsze skutki błędów programistów

Napisanie programu o minimalnym ryzyku wystąpienia błędu jest bardzo trudne. Błędy programistów się zdarzają, dlatego warto wiedzieć, jakie mogą być ich skutki.

Najgorsze skutki błędów programistów

Błędy programistów mogą skutkować bardzo kosztownymi awariami. Szczególnym przypadkiem są badania kosmiczne - awaria oprogramowania w komputerze pokładowym grozi negatywnym zakończeniem misji.

Czasami błędy te nie są związane z typowymi niedopatrzeniami przy implementacji algorytmu (na przykład wykonywanie operacji na zmiennych o niesprawdzonej wartości), ale z lukami spowodowanymi brakiem spójnych jednostek przy określaniu wartości fizycznej. Taki błąd powodował załamanie projektu Mars Climate Orbiter, gdyż parametry silników rakietowych zostały błędnie obliczone - próbnik wkroczył do atmosfery Marsa pod złym kątem i spłonął. Przyczyną było błędne określenie jednostek, w jakich podawane były parametry fizyczne - jedna grupa inżynierów pracowała w jednostkach angielskich, druga w metrycznych. Oprogramowanie nie sprawdzało poprawności danych i jednostek.

40 sekund Ariane-5

Europejska Agencja Kosmiczna doświadczyła skutków błędów programistów. Inauguracyjny lot piątej generacji Ariane zakończył się katastrofą już po 40 sekundach. Przyczyną był błąd konwersji danych między 64-bitowymi danymi zmiennoprzecinkowymi a 16-bitowymi całkowitymi. Wynik konwersji danych był zbyt duży, nastąpiło zatem przepełnienie. Chociaż istniał podprogram, który radził sobie z takimi problemami, podczas tego startu był wyłączony. Skutkiem było zejście rakiety z kursu i eksplozja.

Połączenie oczekujące... i nadal oczekujące

15 stycznia 1990 r. ponad 60 tys. klientów AT&T nie mogło zestawić połączeń międzymiastowych. Przyczyną była awaria oprogramowania w przełącznikach 4ESS - wszystkie 114 urządzeń ciągle się restartowało. Początkowo podejrzewano działalność jakiegoś hakera, ale okazało się, że przyczyną była zła parametryzacja zależności czasowych. Gdy przełącznik stwierdzał przepełnienie, wysyłał sygnał resetu do sąsiedniego, który miał przejmować jego ruch. Po sprawdzeniu aktywności następował drugi reset, który przywracał działalność systemu. Miesiąc przed awarią AT&T postanowiło przyspieszyć ten proces i zmieniło nieco parametry. Ponieważ reakcja była zbyt szybka, druga wiadomość trafiała podczas restartu przełącznika, zatem oprogramowanie stwierdzało awarię, wystawiało sygnał przepełnienia i wykonywało restart. Skutkiem błędów była lawina restartów i odmowa obsługi.


TOP 200