💥 Самая дорогая компьютерная ошибка 90-х: как число 32 767 уничтожило ракету за полмиллиарда долларов 4 июня 1996 года
4 июня 1996 года ракета Ariane 5 взорвалась на 40-й секунде полета. В трубу вылетели 10 лет разработки, 4 научных спутника и около $370 млн. Причина катастрофы скрывалась в программном обеспечении, банально скопированном с предыдущей ракеты
Инженеры перенесли код системы навигации с Ariane 4 без проверки под новые физические параметры. В одном из модулей (написанном на языке Ada) значение горизонтальной скорости конвертировалось из 64-битного числа в 16-битное целое со знаком. Максимальная вместимость такого формата – 32 767. На старой Ariane 4 скорость никогда не превышала этот порог, поэтому защиту от переполнения с этой переменной сняли ради экономии ресурсов компьютера.
Ariane 5 разгонялась агрессивнее. Значение скорости быстро перевалило за 32 767, и произошел сбой. Программа остановилась и передала в канал код ошибки, но бортовой компьютер принял его за навигационные данные. По этим «данным» выходило, что ракета критически отклонилась от курса. Компьютер вывернул сопла на максимальный угол для выравнивания, аэродинамические нагрузки разорвали конструкцию, и сработала система автоподрыва.
Горячий резерв не спас: дублирующая навигационная система работала на абсолютно идентичном софте и отключилась за 72 миллисекунды до основной.
Этот инцидент навсегда изменил стандарты верификации ПО в ESA: переиспользовать унаследованный код без стресс-тестов в новых условиях жестко запретили. Усвоив этот урок, Ariane 5 стала одной из самых надежных ракет в истории и успешно выполнила 117 пусков вплоть до вывода из эксплуатации в 2023 году.