Космическая ошибка: $370 000 000 за Integer overflow

[ Версия для печати ]
Добавить в Telegram Добавить в Twitter Добавить в Вконтакте Добавить в Одноклассники
Страницы: (4) [1] 2 3 ... Последняя »  К последнему непрочитанному [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]
УрусШайтанъ
27.07.2020 - 14:24
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
164
Пуск.
37 секунд полета… бабах!

10 лет и 7 миллиардов долларов, потраченных на разработку.
Четыре полуторатонных спутника научной программы Cluster (изучение взаимодействия солнечного излучения с магнитным полем Земли) и ракета носитель Ariane 5 превратились в «конфети» 4 июня 1996 года.
А вину свалили на программистов.

Предыдущая модель — ракета Ariane 4 — успешно запускалась более 100 раз. Что пошло не так?

Чтобы штурмовать небеса, нужно хорошо знать язык Ада.

12 фото + текст via

Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
Yap
[x]



Продам слона

Регистрация: 10.12.04
Сообщений: 1488
 
[^]
УрусШайтанъ
27.07.2020 - 14:24
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
 
[^]
УрусШайтанъ
27.07.2020 - 14:25
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
Досье

Ariane 5 («Ариан-5») — европейская одноразовая ракета-носитель, входит в семейство Ariane (первый запуск состоялся в 1979 г.). Используется для вывода на околоземную орбиту средних или тяжелых космических аппаратов, может одновременно запускать два-три спутника и попутно до восьми микроспутников.

Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
УрусШайтанъ
27.07.2020 - 14:26
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
История проекта

Создана в 1984-1995 гг. Европейским космическим агентством (ЕКА; ESA), основной разработчик — Национальный центр космических исследований Франции (CNES). Участниками программы являются 10 европейских стран, стоимость проекта — 7 млрд долларов США (46,2% — вклад Франции).

В создании ракеты принимали участие около тысячи промышленных фирм. Основной подрядчик — европейская компания Airbus Defence and Space («Эрбас дифенз энд спейс»; подразделение Airbus Group, «Эрбас груп», Париж). Маркетингом Ariane 5 на рынке космических услуг занимается французская компания Arianespace («Арианспейс»; Эври), с которой ЕКА подписало 25 ноября 1997 г. соответствующее соглашение.

Характеристики

Ariane 5 представляет собой двухступенчатую ракету-носитель тяжелого класса. Длина — 52-53 м, максимальный диаметр — 5,4 м, стартовая масса — 775-780 т (в зависимости от конфигурации).

Первая ступень оснащена жидкостным ракетным двигателем Vulcain 2 («Вулкан-2»; в первых трех модификациях ракеты использовался Vulcain), вторая — HM7B (для версии Ariane 5 ECA) или Aestus («Аэстус»; для Ariane 5 ES). Vulcain 2 и HM7B работают на смеси водорода и кислорода, производятся французской компанией Snecma («Снекма»; входит в группу Safran, «Сафран», Париж).

В Aestus используется долгохранимое топливо — тетраоксид азота и монометилгидразин. Двигатель разработан немецкой компанией Daimler Chrysler Aerospace AG (DASA, «ДАСА», Мюнхен).

Кроме того, к первой ступени крепятся два твердотопливных ускорителя (изготовитель — Europropulsion, «Европропелжн»; Сюрен, Франция; совместное предприятие группы Safran и итальянской фирмы Avio, «Авио»), которые обеспечивают более 90% тяги в начале пуска. В варианте Ariane 5 ES вторая ступень может отсутствовать при выводе полезной нагрузки на низкую опорную орбиту.

Бортовые компьютеры

Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
УрусШайтанъ
27.07.2020 - 14:26
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
Расследование

На следующий день после катастрофы Генеральный директор Европейского Космического Агенства (ESA) и Председатель Правления Французского Национального Центра по изучению Космоса (CNES) издали распоряжение об образовании независимой Комиссии по Расследованию обстоятельств и причин этого чрезвычайного происшествия, в которую вошли известные специалисты и ученые изо всех заинтересованных европейских стран.

13 июня 1996 г. Комиссия приступила к работе, а уже 19 июля был обнародован ее исчерпывающий доклад (PDF), который сразу же стал доступен в Сети.

У комиссии были данные телеметрии, траекторные данные, а также запись оптических наблюдений за ходом полета.
Взрыв произошел на высоте приблизительно 4 км, и осколки были рассеяны на площади около 12 кв. км. в саванне и болотах. Были заслушаны показания многочисленных специалистов и изучены производственная и эксплуатационная документации.

Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
УрусШайтанъ
27.07.2020 - 14:26
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
Технические подробности аварии

Положение и ориентация ракеты-носителя в пространстве измерялись Навигационной Системой (Inertial Reference Systems — IRS), составной частью которой является встроенный компьютер, вычисляющий углы и скорости на основе информации от бортовой Инерциальной Платформы, оборудованной лазерными гироскопами и акселерометрами. Данные от IRS передавались по специальной шине на Бортовой Компьютер (On-Board Computer — OBC), который обеспечивал необходимую для реализации программы полета информацию и непосредственно — через гидравлические и сервоприводы — управлял твердотопливными ускорителями и криогенным двигателем типа Вулкан (Vulkain).

Для обеспечения надежности Системы Управления Полетом использовалось дублирование оборудования. Поэтому две системы IRS (одна — активная, другая — ее горячий резерв) с идентичным аппаратным и программным обеспечением функционировали параллельно. Как только бортовой компьютер OBC обнаруживал, что «активная» IRS вышла из штатного режима, он сразу же переключается на другую. Бортовых компьютеров тоже было два.

Это сообщение отредактировал УрусШайтанъ - 27.07.2020 - 14:27

Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
УрусШайтанъ
27.07.2020 - 14:27
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
Значимые фазы развития процесса

За 7 минут до запланированного старта было зафиксировано нарушение «критерия видимости». Поэтому старт был перенесен на час.

H0 = 9 час. 33 мин. 59 сек. местного времени «окно запуска» было вновь «поймано» и был, наконец, осуществлен сам запуск, который и происходил штатно вплоть до момента H0+37 секунд.

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

В момент H0+39 секунд из-за высокой аэродинамической нагрузки вследствие превышения «углом атаки» критической величины на 20 градусов произошло отделение стартовых ускорителей ракеты от основной ее ступени, что и послужило основанием для включения Системы Автоподрыва ракеты.

Изменение угла атаки произошло по причине нештатного вращения сопел твердотопливных ускорителей, такое отклонение сопел ускорителей от правильной ориентации вызвала в момент H0 + 37 секунд команда, выданная Бортовым Компьютером на основе информации от активной Навигационной Системы (IRS 2).

Часть этой информации была в принципе некорректной: то, что интерпретировалось как полетные данные, на самом деле являлось диагностической информацией встроенного компьютера системы IRS 2.

Встроенный компьютер IRS 2 передал некорректные данные, потому что диагностировал нештатную ситуацию, «поймав» исключение (exception), выброшенное одним из модулей программного обеспечения.

При этом Бортовой Компьютер не мог переключиться на резервную систему IRS 1, так как она уже прекратила функционировать в течение предшествующего цикла (занявшего 72 миллисекунд) — по той же причине, что и IRS 2.

Исключение, «выброшенное» одной из программ IRS, явилось следствием выполнения преобразования данных из 64-разрядного формата с плавающей точкой в 16-разрядное целое со знаком, что привело к «Operand Error».

Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
УрусШайтанъ
27.07.2020 - 14:28
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
Ошибка произошла в компоненте ПО, предназначенном исключительно для выполнения «регулировки» Инерциальной Платформы. Причем этот программный модуль выдает значимые результаты только до момента H0+7 секунд отрыва ракеты со стартовой площадки. После того, как ракета взлетела, никакого влияния на полет функционирование данного модуля оказать не могло.

«Функция регулировки» действительно должна была (в соответствии с установленными для нее требованиями) действовать еще 50 секунд после инициации «полетного режима» на шине Навигационной Системы (момент H0-3 секунд), что она и делала.

Ошибка «Operand Error» произошла из-за неожиданно большой величины BH (Horizontal Bias — горизонтальный наклон), посчитанной внутренней функцией на основании величины «горизонтальной скорости», измеренной находящимися на Платформе датчиками.

Величина BH служила индикатором точности позиционирования Платформы. величина BH оказалась много больше, чем ожидалось потому, что траектория полета Ariane 5 на ранней стадии существенно отличалась от траектории полета Ariane 4 (где этот программный модуль использовался ранее), что и привело к значительно более высокой «горизонтальной скорости».

Финальным же действием, имевшим фатальные последствия, стало прекращение работы процессора. Соответственно, вся Навигационная Система перестала функционировать. Возобновить же ее действия оказалось технически невозможно.

Эту цепь событий удалось полностью воспроизвести с помощью компьютерного моделирования, что — вкупе с материалами других исследований и экспериментов — позволило заключить, что причины и обстоятельства катастрофы полностью выявлены.

Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
УрусШайтанъ
27.07.2020 - 14:28
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
Причины и истоки аварии

Первоначальное требование на продолжение выполнения операции регулировки после взлета ракеты было заложено более чем за 10 лет до рокового события, когда проектировались еще ранние модели серии Ariane.
При некотором маловероятном развитии событий взлет мог быть отменен буквально за несколько секунд до старта, например в промежутке H0-9 секунд, когда на IRS запускался «полетный режим», и H0-5 секунд, когда выдавалась команда на выполнение некоторых операций с ракетным оборудованием.

В случае неожиданной отмены взлета необходимо было быстро вернуться в режим «обратного отсчета» (countdown) — и при этом не повторять сначала все установочные операции, в том числе приведение к исходному положения Инерциальной Платформы (операция, требующая 45 мин. — время, за которое можно потерять «окно запуска»).

Было обосновано, что в случае события отмены старта период в 50 секунд после H0-9 будет достаточным для того, чтобы наземное оборудование смогло восстановить полный контроль за Инерциальной Платформой без потери информации — за это время Платформа прекратит начавшееся было перемещение, а соответствующий программный модуль всю информацию о ее состоянии зафиксирует, что поможет оперативно возвратить ее в исходное положение (это в случае, когда ракета продолжает находиться на месте старта). Однажды, в 1989 году, при старте под номером 33 ракеты Ariane 4, эта особенность была с успехом задействована.

Однако, Ariane 5, в отличие от предыдущей модели, имел уже принципиально другую дисциплину выполнения предполетных действий — настолько другую, что работа рокового программного модуля после времени старта вообще не имела смысла. Однако, модуль повторно использовался без каких-либо модификаций.

Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
УрусШайтанъ
27.07.2020 - 14:29
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
Язык АДА

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

Это было их вполне сознательным решением добавить надлежащую защиту к четырем переменным, а три — включая BH — оставить незащищенными. Основанием для такого решения была уверенность в том, что для этих трех переменных возникновение ситуации переполнения невозможно в принципе.

Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
УрусШайтанъ
27.07.2020 - 14:30
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
Уверенность эта была подкреплена расчетами, показывающими, что ожидаемый диапазон физических полетных параметров, на основании которых определяются величины упомянутых переменных, таков, что к нежелательной ситуации привести не может. И это было верно — но для траектории, рассчитанной для модели Ariane 4.

А ракета нового поколения Ariane 5 стартовала по совсем другой траектории, для которой никаких оценок не выполнялось. Между тем она (вкупе с высоким начальным ускорением) была такова, что «горизонтальная скорость» превзошла расчетную (для Ariane 4) более чем в пять раз.

Защита для всех семи (включая BH) переменных не была обеспечена, потому что для компьютера IRS была продекларирована максимальная величина рабочей нагрузки в 80%. Разработчики должны были искать пути снижения излишних вычислительных издержек и они ослабили защиту там, где теоретически нежелательной ситуации возникнуть не могло. Когда же она возникла, то вступил в действие такой механизм обработки исключительной ситуации, который оказался совершенно неадекватным.

Этот механизм предусматривал следующие три основных действия:
  • Информация о возникновении нештатной ситуации должна быть передана по шине на бортовой компьютер OBC.
  • Параллельно она — вместе со всем контекстом — записывалась в перепрограммируемую память EEPROM (которую во время расследования удалось восстановить и прочесть ее содержимое).
  • Работа процессора IRS должна была аварийно завершиться.
Последнее действие и оказалось фатальным — именно оно, случившееся в ситуации, которая на самом деле была нормальной (несмотря на сгенерированное из-за незащищенного переполнения программное исключение), и привело к катастрофе.

Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
УрусШайтанъ
27.07.2020 - 14:31
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
Выводы

Дефект на Ariane 5 не был вызван одной причиной. В ходе всей разработки и процессов тестирования существовало много стадий, на которых данный дефект мог быть выявлен.
  • Программный модуль был повторно использован в новой среде, где условия функционирования отличались от требований программного модуля. Эти требования не были пересмотрены.
  • Система выявила и распознала ошибку. К несчастью, спецификация механизма обработки ошибок была несоответственной и вызвала окончательное разрушение.
  • Ошибочный модуль никогда должным образом не тестировался в новом окружении — ни на уровне оборудования, ни на уровне системной интеграции. Следовательно, ошибочность разработки и реализации не была обнаружена.

Цитата
Из отчета комиссии:

Главной задачей при разработке Ariane 5 является уклон в сторону уменьшения случайной аварии. Возникшее исключение, объясняется не случайной аварией, но ошибкой конструкции. Исключение было обнаружено, но обработано неверно, поскольку была принята точка зрения, что программу следует рассматривать как правильную, пока не показано обратное. Комиссия придерживается противоположной точки зрения, что программное обеспечение нужно считать ошибочным, пока использование признанных в настоящее время наилучшими практических методов не продемонстрирует его правильность.


Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
УрусШайтанъ
27.07.2020 - 14:32
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
Счастливый конец

Несмотря на фэйл, построили еще 4 спутника Cluster II и вывели на орбиту на ракете Союз-У/Фрегат в 2000 году.

Космическая ошибка: $370 000 000 за Integer overflow
 
[^]
УрусШайтанъ
27.07.2020 - 14:32
Статус: Offline


Бомбарлитровщик

Регистрация: 11.10.15
Сообщений: 7073
Авария при запуске привлекла внимание общественности, политиков и руководителей организаций к высоким рискам, связанным с использованием сложных вычислительных систем, что способствовало увеличению инвестирования в исследования, направленные на повышение надежности систем с особыми требованиями к безопасности. Последующий автоматический анализ кода Ariane (написан на Ada) стал первым случаем применения статического анализа в рамках крупного проекта с использованием методики абстрактной интерпретации.

Конец
 
[^]
schweps2
27.07.2020 - 14:34
18
Статус: Offline


Тру ЯПовец - 45см

Регистрация: 3.07.13
Сообщений: 432
Кто-то получил по жопке..

От программиста всем прувет :)
 
[^]
Oltaetz
27.07.2020 - 14:34
82
Статус: Offline


Ярила

Регистрация: 24.12.14
Сообщений: 1251
А причем тут программисты? Ариан-4 летала и хорошо летала
ИМХО это "совы-эффективные менеджеры" заебенили код "четверки" в А-5 без модификаций и тестов.

Апд
Это-ж какими долбоебами редкостными надо быть, что-бы код, управляющий ракетой в 300 тонн запилить в ракету массой 700 faceoff.gif

Это сообщение отредактировал Oltaetz - 27.07.2020 - 14:38
 
[^]
lozovvv
27.07.2020 - 14:35
3
Статус: Offline


Ярила

Регистрация: 25.10.13
Сообщений: 1821
Поэтому я когда думаю о новом телескопе Джеймс Уэбб, который должен заменить Хаббл, жутко ссыкотно становится что чтото может пойти не так, и это отбросит нас очень далеко назад.

И запускать его будут тоже на Ариане... хотя ракета и надежная, но все равно страшновато
 
[^]
Down
27.07.2020 - 14:35
4
Статус: Offline


Хорошо. Не было бы лучше.

Регистрация: 8.06.11
Сообщений: 1466
Цитата
Это было их вполне сознательным решением добавить надлежащую защиту к четырем переменным, а три — включая BH — оставить незащищенными. Основанием для такого решения была уверенность в том, что для этих трех переменных возникновение ситуации переполнения невозможно в принципе.

это - не основание, а проёб называется
 
[^]
lnet
27.07.2020 - 14:35
60
Статус: Offline


Ярила

Регистрация: 5.08.15
Сообщений: 1762
надо было ее из Австралии отпускать. отвзял от старта, а там уже сама в космос упадет, без всяких там ваших АДА gigi.gif
 
[^]
Kassan888
27.07.2020 - 14:38 [ показать ]
-18
ipv4
27.07.2020 - 14:41
11
Статус: Online


Ярила

Регистрация: 4.11.09
Сообщений: 7297
Цитата (Down @ 27.07.2020 - 14:35)
Цитата
Это было их вполне сознательным решением добавить надлежащую защиту к четырем переменным, а три — включая BH — оставить незащищенными. Основанием для такого решения была уверенность в том, что для этих трех переменных возникновение ситуации переполнения невозможно в принципе.

это - не основание, а проёб называется

Основание. В статье всё понятно разложено: защита убиралась везде, где можно, поскольку ресурсы вычислительной системы были ограничены. Таково было ТЗ.

Вот то, что этот модуль без изменений требований, без тестирования совместно с новой платформой использовался повторно вообще без нихуя - вот где Проёб с большой буквы "Пиздец". ))

Это сообщение отредактировал ipv4 - 27.07.2020 - 14:41
 
[^]
PeterB
27.07.2020 - 14:41
13
Статус: Offline


Юморист

Регистрация: 11.02.15
Сообщений: 550
Я почему думал, что метры с дюймами перепутали.


У брата на работе рассчитывали ограничитель открывания двери автомобиля.
Учитывали и "парусность" двери. Ну, типа, чтобы от ветра она не выворачивалась.

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

Наши опять проверили расчёты. Сказали, что расчёты верны.

Так они пару дней переписывались, пока не разобрались, что заказчик проверяет расчёты ветром скоростью в милях в час, мы же - в км/ч.
 
[^]
tag60
27.07.2020 - 14:41
5
Статус: Offline


Юморист

Регистрация: 15.08.12
Сообщений: 499
Цитата
нужно хорошо знать язык Ада.

Если бы эту тётеньку звали Рая, всё было бы хорошо.
 
[^]
Моглик
27.07.2020 - 14:43
16
Статус: Offline


Балагур

Регистрация: 23.07.19
Сообщений: 905
А при чем здесь прогеры??? Собственно виновен тот кто экономил на разработке ПО для Айр5 и воткнул туда ПО от Аир4 (сами то прочтите) На траекторию Аир5 ПО расчитано НЕ БЫЛО, на айр4 100 запусков без косяков. И где здесь косяк прогера?

(не защищенные переменные остались в ПО от Аир4, а этот носитель и не мог внештатку по этой переменной словить в отличии от Аир5)

Это сообщение отредактировал Моглик - 27.07.2020 - 14:45
 
[^]
ipv4
27.07.2020 - 14:43
17
Статус: Online


Ярила

Регистрация: 4.11.09
Сообщений: 7297
Цитата (PeterB @ 27.07.2020 - 14:41)
Я почему думал, что метры с дюймами перепутали.

Это другая история про канадских (кажется) пилотов, которые в расчётах перепутали галлоны с литрами (или с тоннами, не помню вжо), недозаправили боинг и потом героически сажали почти неуправляемую, в силу отсутствия горючки, неработающей гидравлики и т.п., дуру. )))
 
[^]
Понравился пост? Еще больше интересного в Телеграм-канале ЯПлакалъ!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста, или зарегистрируйтесь, если не зарегистрированы.
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) Просмотры темы: 44550
0 Пользователей:
Страницы: (4) [1] 2 3 ... Последняя » [ ОТВЕТИТЬ ] [ НОВАЯ ТЕМА ]


 
 



Активные темы






Наверх