Kritikus szoftverhibák toplistája
2007/11/07 08:00
4112 megtekintés
A cikk lejárt! Valószínű, hogy már nem aktuális információkat tartalmaz!
Sorozatunkból látszik, hogy híres vagy hírhedt hibákat bármelyik tudományágban találunk. Az informatika sem kivétel, cikkünkben a legjelentősebb szoftverhibákat (bugokat) foglaljuk össze.

A szoftverhibák (úgynevezett "bug"-ok) egyre inkább életünk részévé válnak, hiszen szoftverekkel nem csak a személyi számítógépeinken találkozunk, jelen vannak a mobilkommunikációs és szórakoztató elektronikai készülékekben, a közlekedési eszközeinkben (pl. autó elektronika), orvosi műszerekben(!), robotokban és még hosszasan sorolhatnánk.

Visszahívások szoftverhiba miatt

Szinte naponta halljuk a hírekben, hogy egy adott gyártó kénytelen volt visszahívni termékeit, a nem megfelelő minőség miatt. A híradásokban egyre gyakrabban szerepel a szoftverhiba miatt történő visszahívás is.

2001-ben Japánban felfüggesztették az egyik mobiltelefon típus árusítását, mivel annak szoftverében hibát találtak. A szoftverhiba miatt Javas alkalmazások futtatásakor a készülék adatbázisai megsérülhettek. Természetesen ez nem egyedi eset, hasonló visszahívás a mobilpiacon azóta is számos esetben történt.

2005-ben az egyik autógyár szoftverhiba miatt volt kénytelen visszahívni az egyik modelljét. A hiba azt eredményezte, hogy az autó hirtelen lelassult, majd teljesen leállt, amelynek oka egy indokolatlan vészjelzés volt. Nem kell ecsetelnünk, hogy egy ilyen hiba a közlekedés biztonságát mekkora mértékben veszélyezteti.

Nagy szoftvergyártók is jópárszor beleestek abba a hibába, hogy a PC gyártóknak elküldött, vagy a boltok polcain található szoftvereket voltak kénytelenek visszahívni. A szoftverhiba jellege természetesen sokféle lehet, és az okozott kár/kellemetlenség mértéke is nagyon változó. Körképünkben olyan hibákat mutatunk be, amelyek tetemes anyagi/erkölcsi károkat,vagy akár halálos áldozatokat okoztak már szerte a világban.

De előtte nézzük meg, miért nevezik bug-nak (bogárnak) a szoftverekben található hibákat.

Hibás (Bug-os) programok

A bug (bogár) a mérnöki életben igen régóta használatos szó a mechanikai meghibásodások jelzésére. Thomas Edison (a távíró és sok más hasznos találmány atyja) egy 1878-ban írt levelében is szerepel ez a kifejezés, amelyet később a számítástechnikában is használni kezdtek.

1947-ig kellett várni arra, hogy megtalálják z első igazi (kézzel fogható) "bug"-ot, vagyis bogarat. Történt ugyanis, hogy a Harvard egyetemen kifejlesztett Harvard Mark II. nevű elektromechanikus számítógép reléi közé egy molylepke került, amely a gép hibás működését eredményezte. A jó humorérzékkel megáldott operátor eltávolította a bogarat, és a naplóba beírta a következő szöveget:

"First actual case of bug being found", vagyis Az első valódi eset, amikor bogarat találtunk. A napló egy részlete és a bug (amelyet a képen is láthatunk) ki van állítva egy virginiai Számítógépes múzeumban.

Természetesen a hibakeresésre használt debug szakkifejezés (bogártalanítás) is innen származik.

Orvosi műhibaper programozó ellen?

A szoftverhibák következménye esetenként halálos is lehet. Példa erre a Therac-25 nevű orvosi műszer, amelyet a rákos daganatok sugárdózisokkal történő kezelésére fejlesztették ki.

A kórházakban használt eszköz képes volt röntgen, illetve alacsony energiájú béta sugárzás kibocsátására is. A röntgen sugárzás roncsolásától egy fémlemez védte a pácienst, amelynek pozícionálását a műszer szoftvere automatikusan végezte.

Sajnos egy programhiba miatt előfordulhatott, hogy a fémlemez nem került megfelelő pozícióba Emiatt az USA-ban 1985 és 1987 között több esetben az előírt dózis többszörösét alkalmazta a gép, amely miatt többen meghaltak, illetve súlyosan megsérültek.

A probléma sajnos nem egyedi. Hasonló dolog megtörtént 2000. novemberében is, Panama város egyik rákkutató intézetében. Itt szintén a védőlemezek elhelyezése okozta a gondot. Az egészséges szerveket védendő fémlemezeket ugyanis úgy lehetett a megfelelő helyre helyezni, ha a vezérlőképernyőn a megfelelő helyekre blokkokat rajzolt a kezelő. Hogy az orvosok (akik elvileg nem is kezelhették volna a gépet) meggyorsítsák a folyamatot, rajzoltak egy nagyobb blokkot, amelyben egy kisebb blokkal bejelölték, hogy hol engedik át a sugárzást. Azonban egy sajnálatos szoftverhiba miatt a blokkok körvonalának rajzolási irányától függően más-más dózist javasolt a gép. A nem kívánt működésnek legalább 8 halálos áldozata és 20 sérültje volt.

Látványos szoftverhibák az űrkutatásban

Az űrkutatás területén is nagyon fontos szerepe van a számítógépeknek, és a kutatások komplexitása miatt egy-egy szoftverhiba egész kutatási missziók végére tehet idő előtt pontot.

Ezt történt a Mariner I. űrszonda esetén is, amelyet a Vénusz bolygó kutatására indították (volna) el 1962. július 28-án.

A rakéta egy antenna meghibásodása miattelvesztette a kapcsolatot a földi irányítórendszerrel, amely miatt a fedélzeti számítógép vette át az irányítást. Azonban a szoftver is hibás volt, ezért a rakéta letért a megadott pályáról, ezért azt meg kellett semmisíteni. Utólag kiderült, hogy a szoftverfejlesztők egy képletet elnéztek és ezért hibásan programozták le.

A hiba jelentős anyagi (és erkölcsi) kárt okozott a NASA-nak.

1996-ban június 4-én ismét súlyos következményei lettek egy irányítószoftver hibájának, de most az Európai Űrügynökséget sújtva. Az Ariane-5 hordozórakéta négy olyan műholdat állított volna pályára, amely a magnetoszférát kutatta volna, azt az övet, amely megvédi bolygónkat az állandó napszéltől.

Az Ariane-5-ben az Ariane-4 vezérlőszoftverét használták fel (mivel az már bizonyított), de mivel az új hajtómű gyorsabb volt elődjénél, a számításoknál aritmetikai hiba lépett fel, ami miatt a hajtóművek túlterhelődtek és működésképtelenné váltak.

1999-ben a Mars Climate Orbite űrszonda esett áldozatul szoftverhibának, így nem maradt esélye a Mars légkörének vizsgálatára. A légkörbe ugyan belépett, de sajnos azonnal el is égett. A problémát az okozta, hogy a szoftvermodulokat külön fejlesztőcsoportok készítették és nem állapodtak meg abban, hogy milyen mértékegységeket (metrikus vagy angolszász) használnak a számításoknál.

Harcias bogarak

A hadi alkalmazásokban nyilván sokkal nagyobb figyelmet fordítanak a hibás programkódok kiszűrésére, mint a civil alkalmazásoknál, de itt is történt már tragédia szoftverhiba miatt. 1991. Február 25-én Irakban egy eltévedt Scud rakéta ölt meg 28 amerikai katonát. Ez azért történhetett meg, mert a Patriot légelhárító rendszer és a radar rendszerórájának értéke kis mértékben eltért (0.3 mp-el), amely a mozgó SCUD rakéta esetén 600 méteres különbséget jelent a célzásnál.

A rakétarendszer készítői tudtak a hibáról, de a javított szoftverváltozatot a tragédia után csak 1 nappal tudták biztosítani.

Mekkora az internet? Ha megbénítjuk, megtudjuk...

1988-ban az első internetes féreg (Morris) kevesebb, mint egy nap leforgása alatt 2.000-6.000 SUN és VAX számítógépet fertőzött meg, kihasználva az operációs rendszer egyik hibáját. A féreg kifejlesztője (elmondása szerint) nem akart kárt okozni, csak meg szerette volna becsülni az internetre kapcsolt számítógépek számát. A féreg működéséből adódóan azonban a szerverek nagymértékben lelassultak, illetve elérhetetlenné váltak, nem kis riadalmat keltve akkoriban.

A féreg kifejlesztője felfüggesztett börtönbüntetést és pénzbüntetést is kapott, valamint közmunkára is ítélték. Azóta megszerezte a doktori címét, és nyilván nem csodálkozunk azon sem, hogy kutatási témája a számítógépes hálózatok felépítésével kapcsolatos.

Kerberos véletlenszám generátor

A Kerberos egy igen széles körben elterjedt hitelesítési protokoll, amely a számítógépes hálózatokban a biztonságos hitelesítést hivatott szolgálni. Ilyen rendszerekben a számítógép által generált véletlenszámoknak óriási szerepe van. Sajnos a Kerberos (korábbi verziójában) a véletlenszámgenerálás nem volt eléggé "véletlenszerű", amely megkönnyítette a rendszerbe történő betörést.

AT&T hálózati üzemszünet

1990. január 15-én egy szoftverfrissítésben található bug miatt az AT&T társaság nagytávolságú hálózati eszközei egymás után álltak le. A problémát korábbi szoftverváltozat visszatöltésével orvosolták, de addig 60.000 ember maradt szolgáltatás nélkül közel 9 órán át .

Kék halál

A Windows rendszereken kék halál képernyőnek csúfolják azt a hibaképernyőt, amely akkor jelenik meg, ha az operációs rendszer nem tud helyreállni egy hibából. Ezt az igen kellemetlen hibát sajnos szándékosan is elő lehet idézni, amelyet a vírusok készítő rendre ki is használnak/használtak.

Ezt történt tömegesen 1995/96-ban is, amely "ping halál" néven került be a tudósításokba. A ping program segítségével lehet ellenőrizni hogy elérhető-e a hálózaton egy adott távoli számítógép. A program úgy működik, hogy adatcsomagokat küld a távoli számítógépnek és választ vár rájuk, amelyből természetesen a kapcsolat sebessége is számítható. Sajnos azonban kiderült, hogy ha egy manipulált ping csomagot küldünk egy távoli számítógépnek, az képes volt kék halált válaszolni rá.

Y2K probléma

Mivel is zárhatnánk a listát, mint a kétezres év problémájával, amely talán a leginkább ismert bug a közelmúltból. A hátterében az áll, hogy az 1960-as években kifejlesztett programozási nyelvekben - nyilván helytakarékossági okokból - az évszámokat nem 4, hanem csak 2 karakteren tárolták. Ez az ezredfordulón komoly problémát jelentett, hiszen bizonyos rendszerekben nem lehetett immáron megkülönböztetni az 1900-as éveket a 2000-es évektől.

Szerencsére a problémára - nem kevés pénz és időráfordítás árán - megfelelően sikerült felkészülni, így a filmekben és a bulvársajtóban beharangozott katasztrófa elmaradt, de persze azért kisebb fennakadások/bibák (pl. túlszámlázások) előfordultak.

Nagy Amerikai áramszünet

Nagy területekre kiterjedő áramszünetet okozhat-e szoftverhiba? A Hollywoodi filmesek szerint igen, hiszen számos akciófilmben láthattuk már, ahogy hackerek ténykedéseinek köszönhetően sötétségbe borul az egész keleti, vagy nyugati part.

Ha nem is hackereknek köszönhetően, de 2003-ban tényleg történt egy Észak, és Közép-nyugat Amerikát sújtó áramszünet, amely hozzávetőleg 50 millió embernek okozott kellemetlenséget. Az okozott kár közel 6 milliárd dollárra rúgott.

Az áramszünet igen komplex események végeredménye volt, de egy szoftverhiba is szerepet kapott benne, amely miatt a a vészjelző rendszer felmondta a szolgálatot. Ezt követően olyan folyamatok indultak el, amely miatt a fő és másodlagos irányítórendszer szervere is lelassult, majd leállt, az áramellátó rendszer pedig túlterhelődött.

Hibátlan program?

De miért vannak a szoftverekben bugok?

Ennek sokféle oka van. Lehet hogy a programozó figyelmetlenségből elírja a kódot/vagy az adatokat. Az is lehet, hogy a program különböző moduljai nem megfelelően kapcsolódnak egymáshoz. Ennek oka lehet az, hogy feszes időterv mellett több különálló fejlesztőcsoport dolgozik az adott szoftver különböző moduljain.

A programozónak megfelelő módszereket kell elsajátítania ahhoz, hogy redukálja az előforduló hibákat. Természetesen az adott programozási környezettől is függ, hogy a különböző jellegű hibák milyen módon kerülnek kijelzésre, mennyire hatékony felület áll rendelkezésre a hibák felderítésére/javítására. Léteznek speciális tesztelő szoftverek is, amelyek rövid idő alatt rengeteg tesztesetet tudnak a programokon végigfuttatni. A tesztelési eredmények kiértékelése után remélhetőleg kiderül a bugok nagy része, amelyet még az előtt lehet javítani, hogy a felhasználók kezébe kerüljön a termék.

Források, ajánlott olvasmányok

Abonyi-Tóth Andor

Csatlakozz hozzánk!

Ajánljuk

European Schoolnet Academy Ingyenes online tanfolyamok tanároknak
School Education Gateway Ingyenes tanfolyamok és sok más tanárok számára
ENABLE program Program iskoláknak a bullying ellen
Jövő osztályterme Modern tanulási környezetekről a Sulineten