Egy idősebb programozó egyszer azt mondta:

Egy karrier, amely nem tapasztalt p0 szintű hibát

A fenti idézetet én találtam ki. Programozóként azonban a hibák egyáltalán nem meglepőek.

Mennyi kárt okozott a hiba a cégnek? Ebben a cikkben egy olyan hibát vizsgálunk, amely 870 millió dolláros veszteséget okozott.

Az egész baleset

1996. június 4-én indították útjára az első Ariane 5 rakétát Francia Guyana partjainál.

Az indítás 370 millió dollárba került, a rakéta 500 millió dollár értékű kommunikációs műholdat hordoz, a teljes beruházás pedig 870 millió dollár.

37 másodperccel a felszállás után a rakéta 90 fokkal rossz irányba fordult, az erősítő beszakadt a levegőbe, és az űrrepülőgépet egy hatalmas folyékony hidrogén tűzgolyó nyelte el.

A robbanás pillanatában a mérnök még franciául is közölte: "Minden beállítás normális, és a pálya normális."

A méltóságteljes mérnök a főirányítóban és a tömeg mögötti zsivaj jelezte, hogy ez túl hirtelen történt.

Ez a katasztrofális baleset nyilvános vizsgálatot indított el, és a rakéta által szállított műholdak sérülése miatt közel 4 évre elhalasztották a Föld magnetoszférájának működésével kapcsolatos tudományos kutatásokat.

Az Ariane 5 balesetét széles körben az egyik legdrágább hibatörténetként tartják számon.

A baleset oka

A balesetet a lebegőpontos túlcsordulás okozta.

Az alkalmazásra szánt Ariane rakéták egy meghatározó rakéta felfelé vagy lefelé változót tartalmaznak, a továbbiakban: vízszintes eltérés, a továbbiakban BH .

Az Ariane 5 előző generációs Ariane 4 rakéta tervezésében a mérnök elemzi a BH peremfeltételeit, hogy meghatározza, melyik soha nem több egy 16 bites egész reprezentációs tartománynál (-32768 és 32767 között), ez a változó 16 bites egész számként van definiálva. Típus.

Az Ariane 5 azonban a rakéta teljesítményének javulása miatt a legtöbb alkalmazásban a BH-t 64 bites lebegőpontos számként definiálja, és egyes részeit továbbra is hanyagság miatt használták Ariane 4 16 bites egész számként.

Ha ezt a két kódrészt együttesen használják, akkor a program megpróbál 64 bites lebegőpontos számot rendelni a 16 bites egész számhoz.

A rakéta felemelkedésének első néhány másodpercében a rakéta gyorsulása nagyon alacsony, így a két érték közötti konverzió sikeres.

Kétségbeesetten, ahogy a rakéta gyorsulása egyre nagyobb és magasabb, amikor az érték meghaladja a 16 bites egész számokat, túlcsordulás történik.

Normál körülmények között a rakétahajtómű fúvókája repülésirányítási információkat kap. De miután a túlcsordulás bekövetkezett, kapott egy diagnosztikai bitmintát (ami azt jelzi, hogy túlcsordulás történt), ami miatt a fúvóka helytelenül viselkedett, és végül tragédia történt…

utóirat

Az Európai Űrügynökség végül egy csapatot alakított, hogy nyomokat találjon a mintegy 12 négyzetkilométeren szétszóródott rakétaroncsból, és visszaszerezze a baleset idején az adatokat.

A baleset lenyűgözőnek mondható. Mi nyűgözött le, üdvözöljük a megjegyzés rovatban.