ITHub

A 7 legsúlyosabb szoftverhiba

A 7 legsúlyosabb szoftverhiba
Kóbor Ádám
Kóbor Ádám
| ~5 perc olvasás

Nem teszünk nagy vállalást, ha azt állítjuk, hogy bugok minden - kicsit is komplexebb - szoftverben léteznek. Nem mindegy azonban, hogy mekkora, és milyen kihatású hibákról beszélünk. Amíg emberként olvasás közben egy-egy elütést könnyedén kijavít az agyunk, addig a számítógép egy alkalmazás futtatásakor ennél sokkal butábban jár el, és nem képes az intelligens korrekcióra. Ezért sokszor hatalmas pénzösszegekkel, vagy még rosszabb esetben embereléttel fizetünk. Adódik a kérdés: megfelelő, és lelkiismeretes teszteléssel megelőzhetőek lettek volna ezek a hibák?

Ariane 5 (1996)

ariane 5

A sztori: Az Ariane 5 hordozórakéta néhány másodperccel a kilövése után megsemmisült. Odaveszett a teljes rakománya is: 4 olyan műhold, melyekkel a napszél, és a Föld mágneses mezőjének interakcióját szerették volna vizsgálni.

Az oka: A rakéta vezérlőegysége egyszerűen kikapcsolt, miután megpróbált egy sebességi adatot 64 bitről 16-ra konvertálni. A túlcsordulás következtében a tartalék vezérlőegység vette át az irányítást, ám ez is rögtön leállt, mivel pontosan ugyanazt az algoritmust használta, mint a másik egység.

Az "ára": 500 millió $

Y2K (2000)

y2k

A sztori: A bug, amin néhányan rengeteg pénzt veszítettek, mások pedig meggazdagodtak. Globálisan nézve hatalmas összegekért béreltek fel cégek fejlesztőket, hogy kijavíttassák a hibát az általuk használt szoftverekben. Ugyan az Y2K végül nem okozott komoly problémákat, de minden nagyobb piaci szereplő megérezte a hatását az ezredfordulón.

Az oka: "Takarékossági" okból a régebbi szoftverek legtöbbször nem teljes formátumban tárolták a dátumokat, hanem az évszámot 2 számmal jelölték csupán (pl. 1997-06-01 helyett 97-06-01 formában), így a "00" az 1900-as évet jelentette, nem pedig 2000-et.

Az "ára": világszerte kb. 500 milliárd $

Therac-25 (1985)

therac 25

A sztori: A Therac-25 névre hallgató sugárterápiás készülék szoftvere egy hiba folytán halálos sugármennyiséget bocsájtott ki.

Az oka: A hiba oka egy versenyhelyzet (vagy angolul "race condition") jellegű bug volt. A készülék egy újabb verziójában megszüntették a hardveres üzembiztosítást, és kizárólag a szoftverre támaszkodtak, melynek a biztonsági öndiagnosztikája azonban időnként egy számítási hibára futott. Ha ezzel párhuzamosan a gép kezelője pont beállításokat végzett, akkor egy - a sugár "szétszórásáért" felelős - fémlemez nem került a helyére, ezzel a kívánt sugárzás 100-szorosát juttatva a páciens szervezetébe.

Az "ára": a kezelések mellékhatásaként 4 ember meghalt, 2 pedig súlyos sugárfertőzést kapott

Mariner 1 (1962)

mariner 1

A sztori: A Mariner 1-es rakéta a Vénusz felé tartott volna egy űrszondával, amikor nem sokkal a kilövése után letért a pályájáról. A földi irányítás 293 másodperccel az indítás után megsemmisítette a rakétát.

Az oka: Néhány perccel a felszállás után a rakéta egyik antennája megsérült, ezért egy tartalék rendszer vette át az irányítást, amiben azonban volt egy hiba. Az egyik algoritmus lyukkártyára történő "átlyukasztása" során kihagytak egy felülvonást, melynek hiányában a vezérlőegység abnormális eseményként észlelte a rakéta egyébként teljesen normális mozgását, és korrigálni kezdte azt.

Az "ára": 18.5 millió $ (mai értékén 135 millió)

Patriot (1991)

patriot missile

A sztori: Az öbölháború idején az amerikai Patriot rakétaelhárító rendszer nem tudott "elkapni" egy iraki rakétát, mely ezt követően egy katonai barakkba csapódott.

Az oka: Az egész tragédiáért egy kerekítési hiba volt a felelős, melynek következtében a rendszer hibásan számolta az időt (folyamatosan késett egy kicsit). A bug egyébként ismert volt, ezért időnként újra kellett indítani a rendszert, és beállítani a pontos időt, ám az incidenst megelőzően ezt elmulasztották megtenni, és a 100 órája készenlétben lévő vezérlőegység órája 0.34 másodpercet késett. Ez pont arra volt elég, hogy az ellenséges rakéta pályájának kiszámolásakor fél kilométert tévedjen a szoftver, és téves riasztás okán ignorálja azt.

Az "ára": 28 katona elesett, 98 megsérült

Pentium osztási hiba (1994)

intel fdiv

A sztori: Az Intel 1993-ban piacra dobott, és agyonhájpolt P5-ös processzorai bizonyos lebegőpontos osztásoknál mintegy 0.006%-ot tévedtek. Ugyan a hiba csak relatíve kevés felhasználót érintett, de óriási botrány kerekedett belőle, főleg, hogy mire kiderült, már 5 millió példányt eladtak belőle. Az Intel próbálta menteni a menthetőt: ingyenes cserét ajánlott azoknak, akik be tudták bizonyítani, hogy nagy pontosságú számításokat végeznek (szerk.: itt hangosan felröhögtünk), de a gyakorlatban igazából bárkinek kicserélték, aki panasszal élt.

Az oka: A lebegőpontos-egységben (FPU) található osztótábla kb. 1000 bejegyzéséből 5 hiányzott, ezzel kerekítési hibát okozva bizonyos műveleteknél.

Az "ára": 475 millió $

Szovjet gázvezeték-robbanás (1982)

szovjet gázrobbanás

A sztori: A transzszibériai gázvezeték egy szakaszán kialakuló túlnyomás a Föld történetének legnagyobb - az emberhez köthető - nem nukleáris robbanásához vezetett. Senki sem sérült meg ugyan, de a szovjet gazdaság súlyos károkat szenvedett.

Az oka: A CIA tudatosan bugokat helyezett el egy kanadai szoftvercég egyik termékében, melyet az oroszok készültek megvásárolni, hogy azzal vezéreljék a gázvezetékeiket. A titkosszolgálat úgy gondolta, ez egyértelmű jele annak, hogy az oroszok Kanadán keresztül próbálják az USA szellemi termékeit megkaparintani, ezért jobb lesz megleckéztetni őket. A programban olyan hibákat hagytak, melyek a szovjet ellenőrzéseken simán átjutottak, viszont üzemi körülmények között hibát okoztak a rendszerben. (Az oroszok hivatalosan azóta is tagadják a történet hitelességét, amerikai források viszont újra meg újra megerősítik.)

Az "ára": nincs pontos adat, nagyságrendileg több millió dollárba került a Szovjetúniuónak az incidens