Перейти к содержанию

9 багов


Lame

Рекомендуемые сообщения

1. Истребители F22 не смогли пересечь 180 меридиан

 

При попытке перегнать истребители F22 «своим ходом» с Гавайских островов на базу ВВС Kadena на японском острове Окинава программный сбой «в навигационном обеспечении» вынудил пилотов развернуться и возвратиться туда, откуда вылетели. Теперь стала известна истинная природа «навигационной аномалии».

 

Как сообщает DefenseTech со ссылкой на Associated Press, истребители не сумели преодолеть так называемую «линию перемены дат» — условную линию, по разные стороны которой местное время одно и то же (с точностью до часового пояса), но календарные даты различаются на одни сутки. Линия перемены дат проходит по меридиану 180 градусов с отдельными отклонениями.

 

Перемена дат осуществляется (и вообще имеет смысл) лишь при использовании местного времени. При пересечении линии перемены дат необходимо либо прибавлять, либо вычитать одни сутки – в зависимости от того, в каком направлении осуществляется движение. По всей видимости, этот парадокс Земного шара, осознанный еще участниками экспедиции Магеллана, был позабыт разработчиками F-22 Raptor.

 

Последствия такой забывчивости оказались весьма ощутимыми. У истребителей в полете, отмечает Defense Tech, вышли из строя топливная и навигационная системы, а также – частично – связь.

Лишь одному пилоту удалось связаться с экспертами разработчика (компании Lockheed Martin). Несколько пилотов попытались перезагрузить ПО истребителя в полете.

 

«Победить» ошибку не удалось, однако сами истребители и их пилоты уцелели, что в подобной ситуации следует считать несомненной удачей. Возвращение на Гавайские острова потребовало дополнительной дозаправки в воздухе.

 

Впоследствии «навигационную аномалию» удалось исправить, и F-22 все-таки прибыли на авиабазу назначения.

 

2. Об ошибках деления на нуль

 

Фирма Motorola испытывала новый процессор для автопилота на истребителе в Израиле. Все было отлажено. Пилоты на испытаниях отправились «огибать рельеф» с севера до юга Израиля. Истребитель прекрасно пролетел на автопилоте над равнинной частью, над горной частью, над долиной реки Иордан, и приближался к Мёртвому морю. Не долетев до него, неожиданно происходит общий сброс процессора, автопилот выключается на полном ходу, пилоты переходят на ручное управление, и сажают истребитель.

 

Процессор отправили на доработку и тестирование. Все тесты прошли снова без сбоев. Снова начали реальную проверку. Истребитель пролетел над всеми территориями, но при подлете к Мёртвому морю: общий сброс, выключение автопилота, ручная посадка.

 

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

3. Системы распознавания, как это было в 70-х

 

Где-то в конце 70-х годов — испытания американской ЗСУ «Сержант Йорк». Для поражения вертолетов. ЗСУ была оснащена системой распознавания образов.

 

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

 

4. F-16 вверх ногами

 

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

 

5. Драматическая переинициализация

 

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

 

6. Летчик Ильюшин

 

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

 

7. Недотестировали

 

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

 

8. Правильно выбирайте типы данных

 

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

 

9. И снова деление на нуль

 

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

Изменено пользователем Lame
Ссылка на комментарий
Поделиться на другие сайты

Вот это реально красивые ошибки программеров, а не какой то там индийский код =)

Деление на ноль нихера не красивые ошибки. "Любые входные данные необходимо проверять!."

А Ильюшин жжот, да.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...