Letounům Boeing 787 hrozí chyba, která může mít za následek ztrátu kontroly nad...

Letounům Boeing 787 hrozí chyba, která může mít za následek ztrátu kontroly nad letounem. Není ale důvod k panice. | foto: montáž: Pavel Kasík, Technet.cz, Profimedia.cz

Boeing 787 se musí každých osm měsíců restartovat, jinak spadne software

  • 253
Primitivní chyba v palubním softwaru letadla Boeing 787 Dreamliner může podle amerického úřadu pro bezpečnost v letectví způsobit ztrátu kontroly nad strojem. Na vině je špatně zvolený způsob ukládání času. Po 248 dnech se musí software restartovat.

Americký Federální úřad pro letectví (Federal Aviation Administration, FAA) varoval, že by u moderního letounu Boeing 787 Dreamliner mohlo dojít k podobné chybě, jaké se obávali programátoři na konci roku 1999 (dokument v angličtině je k dispozici zde).

V padesátých letech 20. století se muselo s počítačovou pamětí šetřit a řešení vyhradit pro rok jen dvě číslice (“89") místo číslic čtyř (“1989") se zdálo jako dobrý nápad. Prvního ledna roku 2000 však datum dosáhlo hodnoty „00“ a všichni se báli, co to může způsobit.

Boeing 787 Dreamliner

Na ruzyňském letišti poprvé přistál linkový letoun Boeing 787 Dreamliner polské

Moderní americký tryskový dopravní letoun vyráběný od roku 2007, létá od roku 2009. Takto vypadá uvnitř.

Podobně nedostatečná prozíravost programátorů teď komplikuje provoz Dreamlineru.

„Vydáváme důležité upozornění pro Boeing typu 787. U těchto letounů je nutné provést pravidelnou deaktivaci elektrického proudu. [Bylo totiž zjištěno, že] modely 787, které jsou zapnuty nepřetržitě po dobu delší než 248 dnů, ztratí naráz dodávku střídavého kvůli souběžné deaktivaci všech generátorů,“ varuje zpráva. „Tento jev je způsoben interním softwarovým počítadlem, které přesáhne svou vyhrazenou kapacitu (v originále: overflow) po 248 dnech nepřetržitého provozu.“

Proč k problému dochází a proč není důvod k panice

Přetečení, v angličtině „overflow“, je mezi programátory velmi známý typ chyby. Dojde k němu ve chvíli, kdy pro určitou proměnnou (v tomto případě číslo) vyhradí nedostatečně velký úsek paměti. Neprogramátoři si mohou představit počítadlo ujetých kilometrů. Pokud má šest číslic, může zobrazit maximálně 999 999 ujetých km. Po ujetí dalšího kilometru se počítadlo vynuluje, nemá totiž další cifru, aby ukázalo 1 000 000, ukáže pouze šest nul. Auto, které pětadvacetkrát objelo svět, se tak najednou „tváří“ jako nové.

V případě Boeingu 787 jde zřejmě o chybu proměnné pro ukládání čísel, která má 32 bitů a může tak uložit maximálně čísla menší než 231 = 2147483648. To odpovídá přibližně 248 a půl dni, pokud číslo vyjadřuje setiny sekundy.

01.května 2015 v 14:06, příspěvek archivován: 05.května 2015 v 09:46

248 days == 2^31 100ths of a second. even in 2015, our airplanes have integer overflow bugs https://t.co/6Z8d4y9gjM

Katastrofický scénář tedy vypadá takto: 1. ledna technici nahodí letadlo 787, které pak osm měsíců létá, aniž by kdy byla přerušena dodávka proudu. Šestého září krátce po poledni je letoun ve vzduchu, když tu náhle... počítadlo setin sekundy přeteče vyhrazený prostor, systém zahlásí chybu a generátory se přepnou do režimu „failsafe“, což v tomto případě znamená vypnuto. Protože počítadlo se rozběhlo pro všechny generátory ve stejnou chvíli, ve stejnou chvíli také přeteče. Pokud je v tuto chvíli letoun ve vzduchu, přišel o dodávku elektrické energie a, jak uvádí zpráva, „piloti mohou ztratit nad letadlem kontrolu“.

Federální úřad pro letectví (FAA) považuje situaci za natolik kritickou, že zprávu vydal ještě před obvyklým připomínkovým řízením. Boeing podle svého vyjádření pracuje na softwarové aktualizaci, která chybu opraví. „Zpráva FAA mluví o jevu, který nastal v laboratoři. Simulace potvrdila, že by k tomu mohlo dojít [... ale] žádný reálný letoun zatím takovouto situaci nezaznamenal,“ napsal Boeing ve vyjádření pro The Guardian.

Všechny letouny, kterých se tato zpráva týká, již podle záznamů Boeingu provedly nařízený restart systému. Než bude restart potřeba znovu, bude již zřejmě k dispozici aktualizace softwaru.

V případě „problému roku 2000" se ukázalo, že panika z jevu nazvaného Y2K vysoce překročila skutečné dopady. Až na několik lokálních incidentů nedošlo k žádným nehodám globálního charakteru. Chyba programátorů Boeingu ale ukazuje, že i 15 let poté - v době, kdy už se s pamětí nemusí šetřit tak úzkostlivě - se stále mohou objevit nečekané chyby při ukládání času. Další podobný problém nás čeká v lednu 2038. Času je, zatím, dost.