Najgorsze skutki błędów programistów

Groźny wyścig

Gdy wystąpi awaria w oprogramowaniu sterującym akceleratorem przeznaczonym do radioterapii, pacjenci mogą być narażeni na dawki wielokrotnie większe od zaplanowanego napromieniowania leczonego narządu. Akcelerator Therac-25 używany w 1985 r. miał oprogramowanie przeniesione z poprzedniego modelu i nie było ono dokładnie przetestowane z nowym sprzętem. Urządzenie posiadało dwa tryby pracy - kierowaną wiązkę elektronów o małej mocy oraz potężną wiązkę megawoltowego promieniowania rentgenowskiego, wymagającą pracy z odpowiednimi osłonami. Jeśli operatorzy zmieniali tryb pracy zbyt szybko, występował błąd zwany wyścigiem (race condition) - wysyłano dwa zestawy instrukcji, przy czym pierwsza, która dotarła do urządzenia, ustawiała tryb jego pracy. Poprzednie urządzenie miało zabezpieczenie sprzętowe, które chroniło przed takimi przypadkami, późniejsze wyświetlało tylko dziwne, źle udokumentowane błędy. Oprogramowanie przeniesiono bez odpowiednich testów, miało ono jeszcze kilka innych błędów, których końcowym skutkiem był zgon kilku pacjentów spowodowany chorobą popromienną.

To mógł być ostatni fałszywy alarm

W 1983 r. wiele błędów w niedostatecznie przetestowanym oprogramowaniu kontroli przestrzeni powietrznej poskutkowało fałszywym alarmem radzieckiego systemu obrony przeciwrakietowej. Tylko dzięki doświadczeniu jednego oficera, który zignorował błędne informacje, nie rozpoczęto kontrnatarcia rakietowego - system informował o wystrzeleniu przez USA pięciu pocisków nuklearnych przeciw ZSRR. Ppłk Stanisław Pietrow podjął tę decyzję w okresie, gdy trwał kryzys polityczny spowodowany zestrzeleniem samolotu pasażerskiego Korean Air Lines, zatem napięcie związane z konsekwencjami błędnych decyzji było bardzo silne. Oficer ten zachował się rozsądnie, gdyż gdyby USA zamierzało zaatakować ZSRR, raczej nie posłużyłoby się zaledwie pięcioma pociskami. Informacje o tym, że nie wystrzelono żadnych pocisków potwierdzono 15 minut później przez systemy kontroli radarowej.

Późniejsza analiza wykazała, że oprogramowanie komputerów sterujących obroną przeciwrakietową zawierało bardzo wiele krytycznych błędów, które poskutkowały fałszywym alarmem.

Pięć minut lotu Marinera 1

Czasami problemy może powodować niezrozumienie niektórych inżynierskich form zapisu parametrów przez programistów. W 1962 r. program Mariner, który miał doprowadzić próbnik kosmiczny w kierunku Venus, zakończył się katastrofą jeszcze na etapie wystrzału. Rakieta wystartowała z platformy w Cape Canaveral, ale po kilku minutach zeszła z kursu, zatem oficer bezpieczeństwa zdecydował o wysadzeniu rakiety, by uniknąć tragedii. Przyczyną była zła implementacja - różnica dotyczyła jednego znaku w projekcie. Nad zmienną był umieszczony znak nadkreślenia, który w technologiach kosmicznych oznacza funkcję wygładzającą. Bez niej każde odchylenie powodowało reakcję systemów korekcji i skończyło się zejściem z kursu.


TOP 200