Deset největších softwarových chyb v historii lidstva

29. 9. 2010
Doba čtení: 5 minut

Sdílet

Se softwarovými chybami, bugy, má zkušenosti každý, kdo si byť jen zkusil napsat svůj první „Hello World“. Jak jsou k těmto chybám náchylné gigantické multi-level systémy nebo obří projekty s miliony řádky kódů, proto jistě není třeba zdůrazňovat. Někdy může dojít k nepříjemně velké katastrofě.

Softwarové chyby stojí jen USA kolem 60 miliard USD ročně na nápravách škod, opravách kódu, ztracené produktivitě a samozřejmě i bezprostředním poškození určité věci (v extrémním případě i člověka). Pokud se spletete ve svém vlastním projektu, stojí vás to maximálně čas a nervy, nicméně vadný software v globálním měřítku umí být nejen otravný, ale přirozeně i nespolehlivý, nákladný a klidně i destruktivní nebo přímo smrtelný, jak se nakonec sami můžete přesvědčit z tohoto seznamu:

1. Mariner 1 (1962)

Typickým důkazem toho, kam může vést jedna jediná opomenutá závorka, je raketa Mariner 1, jež si to namísto k Venuši namířila úplně jinam, takže musela být 293 vteřin po startu zničena obsluhou. Došlo tehdy k tomu, že software vyhodnocoval normální odchylky v rychlosti jako chybné a prováděl nežádoucí korekce, jež raketu přirozeně snesly ze správné dráhy. Náklady 18,5 milionu USD.

2. Pád Hartfordského kolosea (1978)

Sotva hodiny poté, co návštěvníci opustili Hartfordské koloseum, se zřítila pod vahou vlhkého sněhu střecha podepřená ocelovými nosníky. Tentokrát byla chyba v CADu, kde se počítalo pouze s čistým tlakem shora, jak se ale jedna z podpěr ohnula pod boční vahou sněhu, spustilo to řetězovou reakci. Škoda 70 milionů USD za stavbu + 20 milionů USD místní ekonomice.

3. Plynový ovladač (1982)

Kontrolní software dbající na správný tlak, teplotu i průtok v transsibiřském plynovodu se zbláznil, což vyústilo v největší nenukleární explozi způsobenou člověkem v historii. Vtipné na celé události je to, že má kulisy jako z laciného filmu o špionech: SSSR nakupovala od Kanady plynový systém vytvořený USA, aby lépe prostudovala jejich počítače a čipy. CIA to ovšem odhalila a software sabotovala tak, aby sice prošel testem, nicméně v praxi selhal. Celá událost stále Sověty miliony USD, nemluvě o dalším škodám ekonomice.

4. III. Světová válka na spadnutí (1983)

Jedině „divnému pocitu“ ruského operátora systému pro časné varování před nukleárním útokem vděčíme tomu, že tu ještě stále jsme. Tento systém totiž jednou nahlásil obsluze pět balistických střel mířících z USA na Moskvu. Operatér naštěstí nahlásil falešný poplach namísto povelu k odpovědi, jelikož jej logicky napadlo, že kdyby USA chtěla zaútočit, jistě by neposlala pár raket, ale samozřejmě všechny najednou. Sovětský software tehdy špatně vyhodnotil prosté odrazy slunce od mraků. Cena tentokrát mohla být vysoká naprosto a maximálně = stovky megatunových jaderných raket se mohly postarat o návrat do doby kamenné.

5. Lékařské stroje vraždí (1985)

Kanadský přístroj Therac-25 mající na starost radiační terapii špatně fungoval, takže několik pacientů od něj dostalo smrtelnou dávku záření. Tentokrát šlo o bug typu „race condition“, v němž je výsledek, resp. činnost závislá na sekvenci nebo časování událostí. Operatér tak mohl Therac-25 nakonfigurovat tak, že paprsky mohly být použity ve vysokoenergetickém režimu bez toho, aniž by se pacient chránil. Výsledek? Tři mrtví a tři těžce zranění.

6. Krach na Wall Street (1987)

Během „Černého pondělí“ 19. října 1987 ztratil Dow Jones Industrial Average 22,6 % hodnoty a S&P 500 20,4 % hodnoty. Největší ztráta, jakou kdy za den na Wall Streetu někdo zažil. Jak se investoři snažili zbavovat akcií, počítačové programy generovaly ohromnou záplavu žádostí najednou, kterou tehdejší systém nezvládl a zkolaboval, takže investoři zůstali doslova slepí. Suma sumárum 500 miliard škod za jediný den.

7. Telefonní linky AT&T na čas umřely (1990)

Společnost AT&T měla celkem 114 ústředen, ovšem stačil drobný mechanický problém v jedné jediné a odporoučela se i centrála. Ta poté předala zprávu o odstavení dalším ústřednám, takže ve finále celá síť spadla na devět hodin. Za vše mohl jediný řádek kódu v komplexním upgradu softwaru majícím původně volání urychlit. Naopak se mu ale podařilo zabránit 75 milionům hovorů a 200 tisícům rezervací letů.

8. Nepatriotští Patrioti (1991)

Během první války v zálivu americký systém střel Patriot v Saúdské Arábii selhal v zásahu proti blížící se irácké raketě Scud, které se podařilo zničit americká kasárna a zabít 28 vojáků + cca 100 jich zranit. Na vině byla programová zaokrouhlovací chyba, která chybně spočetla zbývající čas, takže Patriot Scud zkrátka ignoroval, jelikož se domníval, že dorazí později.

9. Problémy Pentií (1993)

Ačkoliv ne tak úplně softwarová chyba (i když, do důsledku vzato byl i návrh Pentia kdysi jen pouhými daty…). Intelem v této době proklamovaný procesor Pentium občas dělal chyby, když dělil čísla v plovoucí řádové čárce z určitého rozmezí. Třeba 4195835,0/314­5727,0 vyústi­lo ve výsledek 1,33374 namísto 1,33382, což je chyba 0,006 %. Ve skutečné praxi se problém zřejmě výrazněji dotkl jen velmi málo zákazníků, pro firemní PR jde ale jistě dodnes o noční můru. Intel se k problému postavil zprvu vychytrale a nabídl výměnu jen těch čipů z 5 milionů již prodaných, u nichž zákazníci potvrdí, že je potřebují k vysoké přesnosti. Nakonec však vyměnil všem, kteří si stěžovali. Vše Intel přišlo na 475 milionů USD.

10. Raketa Ariane 5 dolétala (1996)

Raketa Ariane 5 spadající pod evropský vesmírný program nesla čtyři družice, jež měly studovat interakce magnetického pole Země se solárním větrem. Tentokrát ji však nezničila obsluha, ale naváděcí a řídící systém se zkrátka vypnul po pár sekundách sám. Došlo totiž k tomu, že naváděcí systém převedl rychlost postranních raket z hodnot 64bitových na 16bitové, ovšem u těch, kde byla hodnota příliš velká, samozřejmě došlo při konverzi k přetečení. Systém pro řízení v sobě nalezl chybu, vypnul se a předal vládu tomu záložnímu. Ten sice fungoval po hardwarové stránce také dokonale, ale naneštěstí byl vybaven stejným algoritmem. Raketa se tak zcela neplánovaně vydala zkoumat svět pod mořskou hladinou. Cynik by zřejmě i dodal, že by rakety mohli vědci rovnou vybavovat i nějakou technikou pro zkoumání moří, kde stejně většina raket tak či onak jednou skončí…

bitcoin_skoleni

Tímto náš seznam pochopitelně ještě zdaleka nekončí a je více než pravděpodobné, že další díly budou následovat. Bugy jsou totiž stejně věčné, jako programátoři, jeden bez druhého nemohou být a rozhodně to nevypadá, že bychom se jich v dohledné době na 100 % zbavili. Moderní počítačová doba nám však naštěstí dopřála i řadu nástrojů, jak mnoho z bugů odchytit již v zárodku (namátkou IDE upozorňující na zapsané nesmysly), proto by bylo z naší strany nemoudré se jich zbytečně zříkat…

(Zdroj: DevTopics)

Autor článku

Petr Hájek vystudoval obor "Aplikace výpočetní techniky v ekonomice", živí se jako novinář a má rád Gentoo, Javu a Free Pascal.