Как одна строчка кода взорвала ракету
В среде программистов и инженеров по автоматике есть своя священная классика провалов. Главный из них случился 4 июня 1996 года на космодроме Куру во Французской Гвиане. Этот случай вошел во все учебники по разработке надежных систем как самая дорогая ошибка в программном обеспечении.
Европейское космическое агентство готовилось к первому запуску тяжелой ракеты-носителя Ариан-5. Ракета несла на борту 4 научных спутника Cluster общей стоимостью свыше 370 миллионов долларов, а на разработку всей космической программы ушло 10 лет и около 7 миллиардов долларов.
В 12 часов 33 минуты ракета оторвалась от стартового стола и устремилась в тропическое небо. Полет шел по расчетной траектории ровно 36 секунд. На 37-й секунде оба бортовых компьютера навигационной системы одновременно вышли из строя. Ракета внезапно сделала резкий маневр под углом 90 градусов к курсу. Колоссальные аэродинамические нагрузки сорвали твердотопливные ускорители, и автоматическая система безопасности подорвала ракету на высоте 4 километров.
Комиссия по расследованию выяснила детали сбоя: разработчики системы управления сэкономили время и бюджет, взяв готовый программный модуль инерциальной платформы от старой ракеты предыдущего поколения Ариан-4.
В коде на языке Ада находилась функция перевода переменной горизонтальной скорости из 64-битного числа с плавающей запятой в 16-битное целое число со знаком. Траектория старой Ариан-4 удерживала горизонтальную скорость в безопасных пределах до 32 767. А вот мощные двигатели Ариан-5 разгоняли ракету значительно быстрее.
На 36-й секунде значение горизонтальной скорости пробило максимальный предел 16-битного регистра. Произошло классическое переполнение разрядной сетки: integer overflow. Программа попыталась записать слишком большое число в тесную ячейку памяти. Разработчики посчитали эту переменную безопасной и заранее убрали блок перехвата ошибок. Система зависла и выплюнула в шину данных диагностический код аварии. Главный компьютер ракеты интерпретировал этот код как реальный крен корпуса на 90 градусов и повернул сопла основных двигателей на предельный угол, разорвав ракету на куски за доли секунды.
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Они сэкономили 6 долларов на болте. Ракета стоила 370 миллионов. ... | 0 | 14.17 | 25-08-2026 |
| 2 | Запуск ракеты Ariane 5 с Куру отложили на неопределенный срок | 0 | 0 | 24-11-2019 |
| 3 | 🚀 Эта крошечная опечатка в программном коде привела к уничтожению ... | -2 | 7 | 29-06-2026 |
| 4 | Новая Ariane: рекордный груз и скрытые драмы европейской космонавтики | 0 | 7 | 05-07-2026 |
| 5 | Китайская ракета Long March 7A взорвалась в полёте через 80 секунд после старта | -1 | 8.54 | 11-08-2026 |
| 6 | С космодрома в Куру стартовала ракета Ariane 5 с двумя спутниками связи на борту | 0 | 0 | 27-11-2019 |
| 7 | Одна из основных китайских космических ракет взорвалась в полете Одна ... | 0 | 9.35 | 02-09-2026 |
| 8 | Каждый блок сам по себе работал безупречно. Ошибка пряталась именно ... | -1 | 5.7 | 23-08-2026 |
| 9 | В Китае ракета через полторы минуты после запуска развалилась на части Причиной ... | 0 | 7.85 | 13-08-2026 |