További Szoftver cikkek
A legenda szerint a számítógépes programhibát a Harvard egyetem mérnökei nevezték el bugnak, azaz bogárnak egy, az egyik szobányi számítógépbe belerepülő és ott üzemzavart okozó bogárról.
A sztori valóban megtörtént, 1947 szeptemberében a Mark II Aiken Relay Calculator elektromechanikus számítógép egyik reléjét tette tönkre egy molylepke. A bug kifejezést azonban ekkor már bő fél évszázada használták mérnökkörökben, a legkorábbi dokumentált felbukkanása 1878-ra esik, amikor Edison hivatkozott így egy levelében a mechanikus szerkezetek építése közben fellépő apró hibákra.
Ettől függetlenül a folklór által halhatatlanná tett ízeltlábú minden idők egyik leghíresebb bugjaként maradt fenn.
A kétezres év problémája
A nyolc éve világméretű hisztériát okozó Y2K bug a számítástechnika hatvanas években lefektetett alapjaiból származott. Annak idején helytakarékossági okokból az évszámok tárolására csupán két számjegyet használtak a programnyelvekben és operációs rendszerekben.
Ebből fakadóan amikor 2000. január elsején ez a szám 99-ről 00-ra változott, azt a szoftverek automatikusan az 1900-as évként értelmezték volna. Könnyű belátni, hogy ez milyen katasztrófákhoz vezethetett volna.
Becslések szerint 300 milliárd dollárt költöttek világszerte a probléma kiküszöbölésére, nagyjából sikerrel. Január elsején a világvége helyett csupán a bulvárhírekbe került bele néhány száz évre kiszámlázott kikölcsönzött videó vagy az amerikai haditengerészet weboldala, ami a 19100-as évet köszöntötte.
2038, a Unix végzetének éve
Az Y2K problémához hasonló anomáliák elé néz a világ 2038-ban, amikor a Unix operációs rendszerek belső órái fognak lenullázódni. A POSIX-időnek nevezett rendszer 1970. január elésejétől másodpercekben méri az eltelt időt, és ebből számolja ki az aktuális dátumot. Az ehhez használt 32 bites tároló 2038. január 19-én, hajnali negyed négykor fog túlcsordulni, és az összes unixos gép rendszerórája visszaugrik 1901. december 13-ra. Hacsak harminc év alatt ki nem találnak valamit a világ programozói.
Kétszer kettő néha öt
Miért nevezte el Pentiumnak az Intel az x86-os processzorcsalád aktuális tagját 93-ban? A korabeli rendszergazdapoén szerint azért, mert amikor a prototípuson hozzáadtak százat az előző generáció nevében szereplő 486-hoz, az eredmény 585,999983605 lett, ami nem fér rá a csipre. A vicc az első Pentium Pro processzorok hírhedt hibájára utal: a csipben az osztás algoritmusához használt táblázatokban rossz értékek szerepeltek, így a processzor minden kilencmilliárd osztási műveletből egyet elrontott.
A hibát 1994 márciusában fedezte fel egy amerikai egyetemi tanár, de igazán nagy port csak fél évvel később kavart, amikor a CNN is beszámolt a bugról. Az Intel visszavonta a piacról a sorozatot, és felajánlotta, hogy bárkinek kicseréli a hibás processzorát, de a felhasználók elenyésző része élt csak ezzel a lehetőséggel. A hiba elemzők szerint közel félmilliárd dollárba került a cégnek, nem számítva a presztízsveszteséget.
Vészhelyzet
Az orvostudományban egy-egy programhiba végzetes következményekkel járhat, ahogy a rákos daganatok kezelésére használt THERAC-25 esetében történt a nyolcvanas években. A gép röntgensugárzással ölte meg a rosszindulatú daganatokat; és egyes esetekben a pácienseket is. 1985 és 87 között legalább öt beteg haláláért volt felelős a vezérlőszoftverben az a programhiba, ami miatt a gép esetenként a beállított dózis ötvenszeresét adta le. A vizsgálatokból kiderült, hogy a szoftver tesztelését maga a programozó végezte, a jelek szerint nem tökéletesen.
Hasonló hiba okozta nyolc beteg halálát 2000-ben Panamában, ahol a diagnózist elemző szoftver adott hibás javaslatokat az orvosoknak az alkalmazandó sugárdózisokra.
Bogarak az űrben
Az űrkutatás történetében csak úgy hemzsegnek a látványos bugok. A legelső 1962-ből származik: a Mariner-1 űrszonda Vénusz-misszóját hiúsította meg a navigációs szoftver hibája, a szonda másodpercekkel a fellövés után letért pályájáról, és megsemmisült (igaz, ehhez az is kellett, hogy az antenna elromoljon, és lehetetlenné váljon a távirányítás a Földről).
Banális hiba okozta a Marsot és holdjait tanulányozó Phobos-1 szonda vesztét 1988-ban. Mint utólag kiderült, egyetlen betű elírása a vezérlő kódban vezetett ahhoz, hogy a szonda olyan pályára álljon, amiről később már nem sikerült visszakormányozni, és a kapcsolat örökre elveszett vele.
Az európai űrűgynökség 96-ban mutatta be a legcsúnyább programhibáját. Az Ariane 5 rakétakilövő állomás főpróbájám az irányítószoftver hibája négy műhold megsemmisülését okozta, a fellövés után 37 másodperccel. A bug 370 millió dollárjába került az ESA-nak, és négy évvel vetette vissza a Föld mágneses pajzsát vizsgáló Cluster Mission projekt indulását.
Az utóbbi évek Mars-expedíciói is bővelkedtek a bugokban. A Polar Lander 99-ben amiatt veszett oda, mert a vezérlő szoftvere tévedésből 40 méteres magasságban kapcsolta ki a leszállást vezérlő motorokat; a Spirit marsjárónak 2004-ben egyszerűen lefagyott a rendszere, mert túl sok nyitott fájl volt a memóriájában; a Global Surveyor pedig egy programhiba miatt biztonsági üzemmódba kapcsolta magát 2006 novemberében, hogy aztán néhány nap múlva elveszítse a kapcsolatot a földi irányítással (azóta sem sikerült helyreállítani).
Kék halál a harcmezőn
A hadsereg általában eltussolja az ilyesmit, csupán egy eset kínos, programhiba okozta baleset napvilágot. 1991 februárjában, az Öbölháborúban egy iraki Scud rakéta csapódott be Szaúd-Arábiában az amerikai hadsereg egyik barakkjába, és a robbanás 28 katonát megölt. A vizsgálat kiderítette, hogy az MIM-104 Patriot légelhárító rendszer célzószoftvere miért tévesztette el a beérkező rakétát: a rendszer belső órája és a radar beérkező jele között három tized másodperces csúszás volt, emiatt a légvédelmi löveg hatszáz méterrel elvétette a Scudot.
Bogarak mindenhol
A programhibák ma már mindenhol ott vannak, és ártanak, ahol csak tudnak. 2005-ben a Toyota egy programhiba miatt volt kénytelen visszavonni a piacról 160 ezer Toyota Priust (a rendszer néha ok nélkül bekapcsolta a világítást), és programhiba állt az 50 millió embert érintő 2003-as nagy észak-amerikai áramszünet hátterében is (a General Electric felügyelőszoftvere rosszul észlelt egy riasztást egy leálló erőműből, leblokkolta az elektromos hálózat néhány fontos vonalát, ami néhány óra alatt több mint száz erőmű leállásához vezetett).
A CIA bogara
Sosem bizonyították, és valószínűleg örökre összeesküvés-elmélet marad az egykori KGB-tiszt története, amely szerint a történelem egyik legnagyobb nem nukleáris robbanását, a transzszibériai gázvezetékben 1982-ben történt gigantikus robbanást is egy programhiba okozta. Igaz, ez nem a klasszikus, tévedés vagy hanyagság szülte hiba volt: az extitkosügynök szerint a CIA csempészte a gázvezetéket irányító programba a bugot, miután kettős ügynökeitől megtudta, hogy a szovjetek nem saját forrásból oldják meg a rendszer vezérlését, hanem egy kanadai cégtől vásárolják a technológiát.