Архив рубрики ~Лента новостей~

37 секунд полёта: как ошибка уничтожила ракету Ariane 5

37 секунд полёта: как ошибка уничтожила ракету Ariane 5
37 секунд полёта: как ошибка уничтожила ракету Ariane 5

37 секунд полёта: как ошибка уничтожила ракету Ariane 5

4 июня 1996 года новая Ariane 5 потеряла управление и разрушилась через 37 секунд. Как переполнение одного числа превратилось в провал всей системы и почему важно обращать внимание на мелочи.

4 июня 1996 года с космодрома во Французской Гвиане стартовала первая ракета Ariane 5. На борту находились четыре научных спутника Cluster, над которыми работали около десяти лет.

Первые секунды всё шло нормально. Затем ракета резко отклонилась от курса, начала разрушаться из-за аэродинамических нагрузок и запустила систему самоуничтожения. От начала стартовой последовательности прошло около 37 секунд.

Причиной оказался не отказ двигателя и не повреждённый датчик. Ракету погубило число, которое не поместилось в выделенную для него переменную.


Старый код установили на новую ракету

Ariane 5 создавалась как замена успешной Ariane 4. Разработчики решили повторно использовать часть проверенного программного обеспечения, включая код инерциальной системы навигации.

Само по себе повторное использование кода — нормальная практика. Переписывать работающую систему с нуля обычно опаснее, чем взять уже испытанное решение. Но у Ariane 5 была другая траектория и более высокая горизонтальная скорость.

Код сохранили, а старые предположения о допустимых значениях данных — не пересмотрели. Более того, проблемная функция отвечала за выравнивание платформы перед запуском. После отрыва ракеты она уже не была нужна, однако продолжала работать ещё около сорока секунд.

Число оказалось слишком большим

Внутри программы значение, связанное с горизонтальной скоростью, преобразовывалось из 64-битного числа с плавающей точкой в 16-битное знаковое целое.

Такой целый тип может хранить значения только от -32768 до 32767. Для траектории Ariane 4 этого диапазона хватало. Ariane 5 разгонялась иначе, поэтому значение вышло за допустимую границу.

Упрощённо опасная операция выглядела бы примерно так:

Horizontal_Value : Float; Converted_Value : Integer_16; Converted_Value := Integer_16(Horizontal_Value);

Если Horizontal_Value оказывается больше максимума для Integer_16, происходит переполнение. В бортовой программе оно вызвало исключение, после которого инерциальная система прекратила работу.

Проверки диапазона для этой переменной не было. Разработчики считали, что она физически не сможет получить слишком большое значение. Для Ariane 4 предположение было верным. Для новой ракеты — уже нет.

Почему не спас резервный компьютер

У Ariane 5 была резервная инерциальная система. Казалось бы, после отказа основного блока управление должно было автоматически переключиться на неё.

Но резервный блок использовал такое же программное обеспечение и обрабатывал те же данные. Он столкнулся с тем же переполнением практически в тот же момент.

Резервирование защитило бы от случайной поломки оборудования, но не от общей ошибки в коде. Два одинаковых компьютера с одинаковой программой не дают независимую защиту от неверного предположения разработчиков.

Сообщение об ошибке приняли за данные полёта

После сбоя инерциальная система отправила диагностическую информацию. Бортовой компьютер воспринял её не как сообщение об отказе, а как обычные данные о положении ракеты.

На основании этих чисел система управления решила, что Ariane 5 сильно отклонилась от курса. Она резко повернула сопла двигателей, пытаясь исправить несуществующую ошибку.

Настоящее отклонение возникло уже после этой команды. Ракета повернулась под слишком большим углом, аэродинамические нагрузки начали разрушать корпус, после чего сработала автоматическая система уничтожения.

Получилась неприятная цепочка: ненужная функция обработала неожиданное значение, два одинаковых блока остановились, диагностические данные попали в систему управления, а исправная ракета начала выполнять опасные команды.

Ошибка была не в одной строке

Историю Ariane 5 часто пересказывают как пример одной неправильной конвертации типов. Технически переполнение действительно запустило аварию. Но свести всё к неосторожному программисту было бы слишком удобно.

Код перенесли на ракету с другой траекторией. Диапазоны входных значений не пересмотрели. Ненужную после запуска функцию не отключили. Основная и резервная системы содержали одинаковую ошибку. А полное тестирование с реальными параметрами полёта Ariane 5 не провели.

Комиссия установила, что подробная системная симуляция могла обнаружить проблему до запуска. Однако во время испытаний использовали смоделированный выход инерциальной системы, а не её полную программную реализацию.

Чему эта авария учит разработчиков?

Первый вывод довольно приземлённый: проверенный код не становится универсальным. Если меняются входные данные, окружение или требования, старые гарантии перестают действовать.

Второй урок касается ошибок. Критическая система не должна полностью останавливаться из-за одного некорректного значения, если существует безопасный способ продолжить работу с ограниченной точностью или перейти в резервный режим.

И наконец, резервная копия той же ошибки остаётся той же ошибкой. Настоящая отказоустойчивость требует анализа общих причин сбоя, а не только установки второго одинакового блока.

Источник

❌ Нет похожих статей с такими тегами

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Новости робототехники ИИ и дроны: Эрик Шмидт о величайшей революции в истории военного дела Архив рубрики ~Коротко из Telegram~ Сбер подтвердил информацию об атаке беспилотника на свой дата-центр в… Архив рубрики ~Коротко из Telegram~ Дата-центр на случай конца света Председателя правления «Ростелекома» Валерий Ермаков… Архив рубрики ~Коротко из Telegram~ Я в американский бигтех. Кому что взять? В OpenAI поймали… Архив рубрики ~Коротко из Telegram~ В двух остановленных дата-центрах «Яндекса» ранее размещались три суперкомпьютера с… Архив рубрики ~Коротко из Telegram~ Тестируем AI Studio для рабочих задач Здесь можно настраивать и… Архив рубрики ~Коротко из Telegram~ Google выпустила Gemini 4 Argon — и превращает Gemini в… Архив рубрики ~Коротко из Telegram~ Anthropic за полгода заблокировала больше 11 млн аккаунтов Anthropic обновила… Архив рубрики ~Коротко из Telegram~ Qwen показала QwenGyre — систему для более эффективного обучения ИИ-агентов…. Архив рубрики ~Коротко из Telegram~ Microsoft делает ставку на свои ИИ-чипы: Maia станет основой инференса… Архив рубрики ~Коротко из Telegram~ Всё о Claude Code в одном месте: появился бесплатный курс… Архив рубрики ~Коротко из Telegram~ Вайбкодер нашёл возможную новую планету с помощью Claude Code Вайбкодинг… Архив рубрики ~Коротко из Telegram~ Китай выдал ИИ-аватару официальное удостоверение личности — впервые виртуальная певица… Архив рубрики ~Полезное~ Камера сама подскажет, как встать для удачного кадра — нашли… Новости робототехники ИИ и дроны: Эрик Шмидт о величайшей революции в истории военного дела Архив рубрики ~Коротко из Telegram~ Сбер подтвердил информацию об атаке беспилотника на свой дата-центр в… Архив рубрики ~Коротко из Telegram~ Дата-центр на случай конца света Председателя правления «Ростелекома» Валерий Ермаков… Архив рубрики ~Коротко из Telegram~ Я в американский бигтех. Кому что взять? В OpenAI поймали… Архив рубрики ~Коротко из Telegram~ В двух остановленных дата-центрах «Яндекса» ранее размещались три суперкомпьютера с… Архив рубрики ~Коротко из Telegram~ Тестируем AI Studio для рабочих задач Здесь можно настраивать и… Архив рубрики ~Коротко из Telegram~ Google выпустила Gemini 4 Argon — и превращает Gemini в… Архив рубрики ~Коротко из Telegram~ Anthropic за полгода заблокировала больше 11 млн аккаунтов Anthropic обновила… Архив рубрики ~Коротко из Telegram~ Qwen показала QwenGyre — систему для более эффективного обучения ИИ-агентов…. Архив рубрики ~Коротко из Telegram~ Microsoft делает ставку на свои ИИ-чипы: Maia станет основой инференса… Архив рубрики ~Коротко из Telegram~ Всё о Claude Code в одном месте: появился бесплатный курс… Архив рубрики ~Коротко из Telegram~ Вайбкодер нашёл возможную новую планету с помощью Claude Code Вайбкодинг… Архив рубрики ~Коротко из Telegram~ Китай выдал ИИ-аватару официальное удостоверение личности — впервые виртуальная певица… Архив рубрики ~Полезное~ Камера сама подскажет, как встать для удачного кадра — нашли…

Оставить комментарий