LINUX.ORG.RU
ФорумTalks

Про глючный софт и последствия


0

0

Где-то в конце 70-х годов - испытания амерской ЗСУ "Сержант Йорк". Для поражения вертолетов. ЗСУ была оснащена системой распознавания образов. Во время испытаний около неё безуспешно кружил вертолет-мишень, которую она так и не смогла распознать. Зато распознала как вертолет вентилятор в туалете, расположенном метрах в 800-х от ЗСУ. И успешно его поразила.

Испытания американского истребителя F-16 проводились, понятное дело, в северном полушарии. На заключительном этапе самолет решили проверить где-то в Латинской Америке, но уже с другой стороны экватора. При переводе самолета в режим автопилота он автоматически развернулся "вверх ногами".

В Афганистане двое наводчиков-наблюдателей (канадцы) подсвечивали цель для наведения на нее бомбы. После сброса бомбы в GPS приемнике закончились батарейки. Расчет их быстро заменил. В результате ракета прилетела не туда. Причина проста. После подачи питания в прибор, переменные, отвечающие за координаты цели, автоматически инициализировались координатами текущего местоположения. Наводчики погибли от близкого разрыва.

На испытаниях Су-24 регулярно случался отказ аппаратуры бомбометания. Причем происходило это только в том случае, если на цель заходил летчик-испытатель Ильюшин. Причина оказалось тоже не сложной. Только он заходил на цель с точностью, превышавшей машинную точностью. Получался "машинный нуль", после чего шел сбой из-за попытки деления на ноль.

Этот пример тоже очень характерен, хотя, строго говоря, он и не относится напрямую к разработке ПО, но демонстирует важность тестирования. Возникла эта проблема, скорее всего, на МБР 15А30, причем уже после постановки ее на боевое дежурство. При пуске, ракета выходила из шахты и взрывалась на высоте нескольких метров над землей. Причина оказалась тоже не самой сложной. Рубашка сопла охлаждается окислителем, после чего он поступает в камеру сгорания. В спешке принятия нового комплекса на вооружение к очередной годовщине, в систему пуска двигателя внесли небольшие улучшения, которые не протестировали должным образом. В результате пироклапан срабатывал с большим запаздыванием. Окислитель не поступал в трубки охлаждения, а жаропрочности сопла хватало только на то, чтобы ракета вышла из шахты.

Причиной взрыва 4 июня 1996 г. ракеты Ариан-5, была программная ошибка. В системе управления ракеты использовалось модифицированное программное обеспечение ранее успешно работавшее на Ариан-4, но Ариан-5 ускорялась быстрее предыдущей модификации, в результате когда на 40 секунде полета одна из вспомогательных подпрограмм попыталась преобразовать длинное целое значение в короткое без проверки величины значения, и то вышло за границы типа, произошло отключение системы управления ракеты, и она была взорвана по команде на самоликвидацию. Прямой (вместе с ракетой-носителем была потерян коммуникационный спутник) и косвенный ущерб от этого программного сбоя был оценен в полмиллиарда долларов.

история о неприятностях ракетного крейсера ВМС США «Иорктаун». Это экспериментальный, так называемый «умный корабль» (smart ship), важнейшие системы жизнеобеспечения которого управляются компьютерами без участия человека. И что немаловажно – под руководством операционной системы Windows NT 4.0. Так вот, однажды вся эта махина, находясь в открытом море, на три без малого часа встала в полный ступор из-за наглухо зависшего программного обеспечения. Причем произошло это из-за совершенно пустяковой оплошности одного из операторов, занимавшегося калибровкой клапанов топливной системы и записавшего в какую-то из ячеек расчетной таблицы нулевое значение. Ну а далее пошла операция деления на этот самый нуль. С подобной ерундой справляется даже самый дешевый калькулятор, однако здесь в терминале оператора система дала ошибку переполнения памяти. Причем ошибка быстро перекинулась на другие компьютеры локальной сети корабля, началась цепная реакция, и по известному принципу домино рухнула вся бортовая система. Которую удалось восстановить и перезагрузить лишь через 2 часа 45 минут, в течение которых здоровенный боевой корабль оставался по сути дела беспомощен и неуправляем

★★★★★

Ответ на: комментарий от anonymous

Половина была для меня новой. Отсюда вывод: для кого-то новой могла быть и другая половина.

ugoday ★★★★★
() автор топика

Поный текст этой статьи Бёрда Киви всегда можно найти в "Компьютерре" за 2003-й, кажется, год. А то и раньше. Давно это было... В конце там есть вывод о том, что очень хорошо, что ключ от ядерных комплексов в руках человека, но время подлёта всё уменьшается и скоро придётся отдать контроль машине. А если винда? А если заглючит.

anonymous
()

>Где-то в конце 70-х годов - испытания амерской ЗСУ "Сержант Йорк"

Странно, не слышал о такой.

>Испытания американского истребителя F-16 проводились, понятное дело, в северном полушарии. На заключительном этапе самолет решили проверить где-то в Латинской Америке, но уже с другой стороны экватора. При переводе самолета в режим автопилота он автоматически развернулся "вверх ногами".

Начался испорченный телефон :) Ошибка была обнаружена не в процессе полётов, а на этапе тестирования. Плюс к тому, переворот должен был происходить не просто при полёте в южном полушарии (программисты, всё же, не настолько тупы), а при пересечении экватора :)

>На испытаниях Су-24 регулярно случался отказ аппаратуры бомбометания. Причем происходило это только в том случае, если на цель заходил летчик-испытатель Ильюшин. Причина оказалось тоже не сложной. Только он заходил на цель с точностью, превышавшей машинную точностью. Получался "машинный нуль", после чего шел сбой из-за попытки деления на ноль.

Было такое :D

>Причиной взрыва 4 июня 1996 г. ракеты Ариан-5, была программная ошибка. В системе управления ракеты использовалось модифицированное программное обеспечение ранее успешно работавшее на Ариан-4, но Ариан-5 ускорялась быстрее предыдущей модификации

Опять испорченный телефон. Ракету задержали со стартом, углы какого-то из параметров (лень искать точно) вышли за заложенные программистами пределы и произошло необработанное исключение. Никакого переполнения там в помине не было, если бы переменную изначально не зажимали, то всё бы было ок. Курьёзный случай, когда система безопасности в языке угробила всю систему :)

Добавлю пару историй.

1. Мёртвое море. Лётчиков IAF тренеруют на предельно малых высотах (меньше 200 метров). У F-16 начинают сбрасываться бортовые компьютеры. Неприятно, но не смертельно. На стендах - всё прекрасно. Через какое-то время выясняется, что сброс происходит, при достижении строго нулевой высоты над уровнем моря. Деление на ноль в одной из подпрограмм и необработанное исключение. Мёртвое море находится НИЖЕ уровня моря :)

2. Фамилию испытателя уже забыл. М.б. Ильюшин. Отрабатывали на Су-24 автоматический подход к аэродрому (борт, ЕМНИП, позволяет его на полном автомате довести до высоты 15 метров). Всё прекрасно, но уже перед самой полосой, на высоте метров в 200, машина делает энергичную бочку. Что испытал в этот момент Ильюшин (предположим, что это, всё же, был он, ну забыл я, с кем это было) можно только догадываться, но когда он вылез из благополучно севшей машины, он долго требовал "подать ему этого %^% ^$%$ $%$%^ проектировщика автопилота", так что пришлось отпаивать его (Ильюшина, не инженера) спиртом. Оказалось, что программа автопилота таким экстравагантным способом сбрасывала избыточную скорость :) Т.е., в общем, не ошибка, но фича...

3. Ну, про Буран, который чуть не вызвал несколько сердечных приступов, резко уйдя с ожидаемой посадочной траектории, наверное, итак все в курсе :D ...

KRoN73 ★★★★★
()
Ответ на: комментарий от sin_a

Просто процитирую, так сказать, из самого авторитетного источника:

=== cut ===
Интенсивно гасится в атмосфере скорость. Полет проходит строго по расчетной траектории снижения, на контрольных дисплеях ЦУП его отметка смешается к ВПП посадочного комплекса практически в середине допустимого коридора возврата. "Буран" приближается к аэродрому несколько правее оси посадочной полосы, все идет к тому, что он будет "рассеивать" остаток энергии на ближнем "цилиндре". Так думали специалисты и летчики-испытатели, дежурившие на объединенном командно-диспетчерском пункте. Включаются бортовые и наземные средства радиомаячной системы. После отметки 10 км "Буран" летит, можно сказать, по знакомой дороге, проторенной летающей лабораторией Ту-154ЛЛ и аналогом ОК.

На объединенном командно-диспетчерском пункте (ОКДП) высшая степень напряжения: "Буран" круто изменил курс и летит почти поперек оси ВПП. В чем дело? Проанализировав ситуацию, служба управления докладывает: "Все в порядке! Система не ошиблась, а просто на сей раз оказалась "умнее". "Буран" будет заходить на полосу не левым кругом, как предполагалось, а правым. Выход в ключевую точку проходит по оптимальной для данных начальных условий траектории при практически предельном встречно-боковом ветре.

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

// http://www.buran.ru/htm/flight.htm
=== cut ===

Описание достаточно сухое, но, говорят, в тот момент многие за сердце хватались :D

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Обратная связь нужна :) "система докладывает, обстоятельства - такие, решение такое, начинаю маневр" :)

sin_a ★★★★★
()
Ответ на: комментарий от sin_a

Не совсем в тему, но забавно:

В свое время, когда наши ребята только пробовали делать системы автоматического доказательства теорем случилась хохма:

Написали программу для решения школьных задач по геометрии. Все как полагается, расширяемая база знаний, начальные аксиомы и т.д. Попросили доказать ряд теорем для равнобедренного треугольника ABС (ну там углы при основании равны, главная медиана=биссектр.=высота и т.п.). Так вот прога к удивлению всех собравшихся быстренько все доказала по 3 признаку равенства треугольников сравнивая треугольники ABC и ACB. В школе этих программистов учили доказывать существенно сложнее. :)

soomrack ★★★★
()
Ответ на: комментарий от sin_a

>Обратная связь нужна :) "система докладывает, обстоятельства - такие, решение такое, начинаю маневр" :)

Опухла бы она это делать в те времена, на той элементной базе (процессор - 170 копс!) и с теми каналами связи :)

KRoN73 ★★★★★
()
Ответ на: комментарий от Energizer

> Ага. Выдаст дамп с сотни (тысячи?) датчиков и скажет "я проанализировал всё это и решил сделать так" :)

Если серьёзно, насколько я понимаю, при испытаниях именно так и делается. Потому как иначе в случае аварии установить точную причину может оказаться вообще невозможно, и тогда деньги, потраченые на испытание, потрачены впустую. Использовать бортовые самописцы (типа самолётных "чёрных ящиков") тоже не всегда возможно - если, к примеру, ракета взорвётся на старте - никакой "чёрный ящик" там не уцелеет.

А данных там на самом деле не так уж много будет. Передать их на землю технике уровня 80-х годов ИМХО вполне реально (тем более что эта система должна работать полностью независимо от основной системы управления).

slav ★★
()

> Зато распознала как вертолет вентилятор в туалете,

Слышал историю, как на стрельбах "потеряли" имитатор дозвуковой крылатой ракеты, и выпустили 2 противоракеты по быстро вращающейся антенне. К счастью, вовремя сообразили и подорвали ракеты далеко от антенны. Никто не пострадал, только один прапорщик увидев ракеты забился в такую щель, что его долго оттуда извлекали.

acheron ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.