Oudot viat ja tarinat niiden takana

Skurrile Bugs und die Geschichten dahinter

Jos etsit World Wide Webistä outoja, hämmästyttäviä ja hauskoja vikoja, löydät monia mielenkiintoisia tarinoita.
Tässä artikkelissa haluamme tehdä yhteenvedon muutamista kuuluisista bugitapauksista – huvittavista erittäin tuhoisiin.
Löytäminen ja korjaaminen on muuten usein yhtä mielenkiintoista kuin itse vika.

500 mailin sähköpostivirhe

Yksi kummallisimmista virheistä löydettiin yliopiston sähköpostijärjestelmästä.
Professori huomasi, että 500 kilometrin säteellä oleville vastaanottajille lähetetyt sähköpostit toimitettiin ongelmitta, kun taas kauempana oleville vastaanottajille lähetetyt sähköpostit eivät koskaan saapuneet perille.

Miten se on mahdollista?
Paljon pään raapimisen ja koodin läpikäymisen jälkeen kävi ilmi, että virhe johtui aikakatkaisuparametrista, joka perustui ajanjaksoon, jonka aikana valosignaalit ehtivät kulkea tietyn matkan.
Koska kehittäjät olivat käyttäneet laskennassa valon nopeutta, tämä johti siihen, että sähköpostiviestinnän ”horisontti” oli hyvin todellinen, vaikkakin tahaton, 500 mailia.
Kun aikakatkaisuparametria oli säädetty, vika korjaantui.

Tämä vika on muuten myös syynä sellaisen uutiskirjeen ja blogin nimeen, joka käsittelee ainoastaan absurdeja ohjelmistovikoja.
Uutiskirjeen, joka on lukemisen arvoinen, nimi on 500 Mile Email, ja sen perusti Harley Hicks.

Mars Climate Orbiter

Mars Climate Orbiter oli NASA:n luotain, joka lähetettiin Marsiin osana Discovery-ohjelmaa vuonna 1999, mutta joka lopulta yksinkertaisesti paloi ohjelmistovirheen takia, joka oli yhtä kuuluisa kuin yksinkertainenkin.
Tämä tuolloin huipputeknologisen järjestelmän kunniaton loppu johtui yksinkertaisesta yksikkövirheestä: vaikka navigointiryhmä suoritti laskelmansa metrijärjestelmän yksiköissä, kiertoradan ohjelmisto käytti englantilais-amerikkalaisia mittayksiköitä.
Se käytti siis yksiköitä, kuten puntia (painoa kuvaava yksikkö), tuumaa ja jalkaa (pituutta kuvaava yksikkö) ja gallonaa (tilavuutta kuvaava yksikkö), jotka poikkesivat metrijärjestelmän yksiköistä, kuten kilogrammoista, metreistä ja litroista.
Tämä ero tarkoitti sitä, että orbiter lensi paljon suunniteltua lähempänä Marsia ja paloi lopulta Marsin ilmakehässä.

Mitä voimme oppia tästä?
Tapaus osoittaa meille, miten tärkeää on sopia yhteisistä standardeista ja viestintämuodoista ohjelmistokehityksessä ja noudattaa johdonmukaisesti sovittuja standardeja.

Pentium FDIV -virhe

Toinen erittäin kuuluisa esimerkki on Intelin Pentium-prosessoreissa 1990-luvun puolivälissä esiintynyt FDIV-virhe.
Tämä kelluvan pisteen jako-operaatiossa esiintynyt vika aiheutti sen, että prosessori palautti virheellisiä tuloksia tietyissä jakolaskuissa.
Vaikka vika esiintyi vain hyvin erityisissä olosuhteissa, eivätkä useimmat käyttäjät todennäköisesti olisi koskaan huomanneet sitä, sen saama julkinen huomio sai Intelin lopulta käynnistämään korvauskampanjan.
Tämä tapaus osoitti tarkkuuden merkityksen laitteistokehityksessä ja yleisön kasvavan tietoisuuden teknisistä yksityiskohdista.

Virhe on muuten niin tunnettu, että siitä on erillinen Wikipedia-artikkeli, jonka voit lukea täältä.

Y2K-virhe

Yksi tunnetuimmista ja potentiaalisesti katastrofaalisimmista vioista teknologian historiassa oli Y2K-virhe, joka tunnetaan myös nimellä vuosi 2000 -ongelma.
Virhe johtui käytännöstä, jossa vuosiluku koodattiin tietokonejärjestelmissä vain kahdella numerolla (esim. ”99” vuodelle 1999) muistitilan säästämiseksi.
Tämä johti laajalle levinneeseen pelkoon siitä, että vuoden 1999 vaihtuessa vuoteen 2000 tietokonejärjestelmät tulkitsisivat vuoden ”00” olevan 1900 eikä 2000, mikä voisi johtaa virheellisiin laskelmiin ja vikoihin pankkijärjestelmistä voimalaitosten ohjausjärjestelmiin.

Maailmanlaajuisesti investoitiin miljardeja euroja ongelman korjaamiseen päivittämällä ohjelmistoja ja testaamalla järjestelmiä sen varmistamiseksi, että ne pystyvät käsittelemään uutta vuosituhatta oikein.
Näiden ponnistelujen ansiosta pelätyt katastrofaaliset vaikutukset jäivät suurelta osin toteutumatta, ja Y2K-virhe toimii nyt varoittavana esimerkkinä ohjelmistokehityksen ennakkosuunnittelun tärkeydestä.

Heartbleed-virhe

Heartbleed oli vakava tietoturva-aukko OpenSSL-ohjelmistokirjastossa, joka löydettiin huhtikuussa 2014.
OpenSSL:ää käytetään laajalti SSL- ja TLS-protokollien toteuttamiseen internet-viestinnässä, ja se tarjoaa salauksen erilaisille palveluille arkaluonteisten tietojen, kuten salasanojen ja henkilötietojen, suojaamiseksi.

Bugin avulla hyökkääjät pystyivät lukemaan verkkopalvelimien muistia ja saamaan näin haltuunsa suuren määrän arkaluonteisia ja luottamuksellisia tietoja jättämättä mitään jälkiä.
Huolestuttavaa tässä tapauksessa ei ollut ainoastaan hyväksikäytön helppous vaan myös se, että vika pysyi täysin huomaamatta noin kahden vuoden ajan.

Heartbleed johti siihen, että avoimen lähdekoodin ohjelmistojen turvallisuuteen investoitiin entistä enemmän ja että tietoturvan merkitys digitaalisessa maailmassa ymmärrettiin paremmin.

Päätelmä

Nämä anekdootit osoittavat, että ohjelmistokehityksessä esiintyvät virheet voivat joskus saada omituisia muotoja.
Tämän pitäisi muistuttaa meitä siitä, että kaikesta tekniikan kehityksestä huolimatta (ihmisen tekemille) virheille, huolimattomuudelle ja väärinkäsityksille on edelleen tilaa, ja niillä voi olla kauaskantoisia seurauksia.
Näiden vikojen tarinat eivät ole vain viihdyttäviä, vaan ne ovat myös arvokkaita opetuksia siitä, miten tärkeää on noudattaa asianmukaista huolellisuutta ja tarkistaa työtuotteet perusteellisesti ennen niiden julkaisemista (eli ennen kaikkea asianmukainen ohjelmistotestaus).