Kosmiczne bugi. Największe błędy w historii oprogramowania. Lista subiektywna cz. II

Kosmiczne bugi. Największe błędy w historii oprogramowania. Lista subiektywna cz. II
Błędów w kosmicznym oprogramowaniu jest wbrew pozorom całkiem sporo i wszystkie są bardzo szeroko komentowane. Szczególnie pomyłki programistyczne, powodujące wielkie eksplozje są  bardzo spektakularne, ale też drogie i zabójcze dla kariery osób odpowiedzialnych za ich przeoczenie.


Są żywym przypomnieniem tego, że dla najwyżej pewności należy sprawdzać, i ponownie sprawdzać (i sprawdzać, sprawdzać, sprawdzać) każdą linijkę kodu.


  • Mars Climate Orbiter nie orbituje.

W 1998 roku sprzęt wart 327,6 miliona dolarów zagubił się gdzieś w kosmosie z powodu drobnej pomyłki programistycznej.
Od początku misji wydarzyło się kilka problemów ale największym okazało się to, że w różnych zespołach inżynierowie używali różnych jednostek miar. Jedna grupa pracowała nad sterami strumieniowymi, gdzie jednostką miary były kilogramy na sekundę, inni używali Newtonów na sekundę. Nikt nie zauważył pomyłki, wynikiem której silniki miały 4,45 razy więcej mocy, niż powinny wchodząc w orbitę czerwonej planety. Ofiara tej nieuwagi orbituje dziś w przestrzeni.


  • Pierwszy lot sondy Mariner1- 5 minutowy

W dniu 22 lipca 1962 z Cape Canaveral wystrzelono pierwszą sonda Mariner programu NASA na misję oblatywania  Wenus. Po kilku minutach, Mariner 1 zaczęła zbaczać z kursu. Systemowi naprowadzania nie udało się skorygować trajektorii, nie powiodła się także próba ręcznego sterowania.
Rakieta zboczyła w kierunku szlaków żeglugowych Północnego Atlantyku, więc jedyne co ​​mógł zrobić specjalista ds. bezpieczeństwa, to wysadzić ją w powietrze. Po czterech minutach i 55 sekundach misja Mariner1 eksplodowała.
Dodatkowej pikanterii całej sytuacji nadawało to, że NASA ze swoją Mariner1 rywalizowała z radzieckim Sputnikiem, a wypadek sondy był kolejnym międzynarodowym blamażem dla agencji. Po tej klęsce NASA określiła problem jako "niewłaściwe działanie sprzętu naprowadzającego Atlas" - choć później okazało się, że przeoczenie jednego znaku interpunkcyjnego przez inżyniera spowodowało błąd krytyczny oprogramowania. Winnym znakiem interpunkcyjnym był górny pasek nad symbolem promienia napisany odręcznie w zeszycie. Niewiele osób wie, że overbar wyglądający jak zwykły myślnik oznacza funkcję koordynowania lokalizacji, więc formuła powinna była obliczyć wartość pochodnej czasowej promienia. Bez funkcji koordynowania lokalizacji, nawet drobne wahania prędkości powodowały zagrożenie.


  • Czterdzieści sekund Ariane-5

Europejska Agencja Kosmiczna (ESA) również doznał wstydu z powodu wadliwego oprogramowania. Inauguracyjny lot rakiety piątej generacji Ariane pokonał nawet niechlubny rekord sondy Mariner1: trwał tylko 40 sekund, zanim wystrzelono ją w powietrze.
W dniu 4 czerwca 1996 po dramatycznym starcie Ariane-5 odwróciła się i zaczęła się rozpadać, a później całkowicie eksplodowała. Już 30 sekund po starcie rakieta straciła wytyczne i całkowicie zbaczając z kursu uległa automatycznemu samozniszczeniu.
Problemem było to, że przekształcano dane z  64-bitowych w 16-bitowe wartości całkowite. Wynikiem przeliczenia danych była zbyt duża jak na 16-bitów liczba całkowita, co spowodowało przepełnienie arytmetyczne w hardwerze. W przypadku ESA software, który mogłyby rozwiązać problemem był wyłączony, więc nie było możliwości powstrzymania kaskady awarii systemowych, które doprowadziły do ​​zniszczenia.

To powinno Cię zainteresować