При попытке перегнать истребители F22 «своим ходом» с Гавайских островов на базу ВВС Kadena на японском острове Окинава программный сбой «в навигационном обеспечении» вынудил пилотов развернуться и возвратиться туда, откуда вылетели. Теперь стала известна истинная природа «навигационной аномалии».
Как сообщает DefenseTech со ссылкой на Associated Press, истребители не сумели преодолеть так называемую «линию перемены дат» — условную линию, по разные стороны которой местное время одно и то же (с точностью до часового пояса), но календарные даты различаются на одни сутки. Линия перемены дат проходит по меридиану 180 градусов с отдельными отклонениями.
Перемена дат осуществляется (и вообще имеет смысл) лишь при использовании местного времени. При пересечении линии перемены дат необходимо либо прибавлять, либо вычитать одни сутки – в зависимости от того, в каком направлении осуществляется движение. По всей видимости, этот парадокс Земного шара, осознанный еще участниками экспедиции Магеллана, был позабыт разработчиками F-22 Raptor.
Последствия такой забывчивости оказались весьма ощутимыми. У истребителей в полете, отмечает Defense Tech, вышли из строя топливная и навигационная системы, а также – частично – связь.
Лишь одному пилоту удалось связаться с экспертами разработчика (компании Lockheed Martin). Несколько пилотов попытались перезагрузить ПО истребителя в полете.
«Победить» ошибку не удалось, однако сами истребители и их пилоты уцелели, что в подобной ситуации следует считать несомненной удачей. Возвращение на Гавайские острова потребовало дополнительной дозаправки в воздухе.
Впоследствии «навигационную аномалию» удалось исправить, и F-22 все-таки прибыли на авиабазу назначения.
Об ошибках деления на нуль
Фирма Motorola испытывала новый процессор для автопилота на истребителе в Израиле. Все было отлажено. Пилоты на испытаниях отправились «огибать рельеф» с севера до юга Израиля. Истребитель прекрасно пролетел на автопилоте над равнинной частью, над горной частью, над долиной реки Иордан, и приближался к Мёртвому морю. Не долетев до него, неожиданно происходит общий сброс процессора, автопилот выключается на полном ходу, пилоты переходят на ручное управление, и сажают истребитель.
Процессор отправили на доработку и тестирование. Все тесты прошли снова без сбоев. Снова начали реальную проверку. Истребитель пролетел над всеми территориями, но при подлете к Мёртвому морю: общий сброс, выключение автопилота, ручная посадка.
Длительные тесты не могли выявить никаких изъянов. После продолжительных попыток было найдено, что программы автопилота при вычислении параметров управления по глубоко научным секретным формулам производили деление на значение текущей высоты истребителя над уровнем океана. При подлете к Мёртвому морю высота становилась нулевой, и процессор при делении на ноль давал общий сброс. До этого случая никому не приходило в голову, что самолеты могут летать ниже уровня океана…
Системы распознавания, как это было в 70-х
Где-то в конце 70-х годов — испытания американской ЗСУ «Сержант Йорк». Для поражения вертолетов. ЗСУ была оснащена системой распознавания образов.
Во время испытаний около неё безуспешно кружил вертолет-мишень, которую она так и не смогла распознать. Зато распознала как вертолет вентилятор в туалете, расположенном метрах в 800-х от ЗСУ. И успешно его поразила.
F-16 вверх ногами
Испытания американского истребителя F-16 проводились, понятное дело, в северном полушарии. На заключительном этапе самолет решили проверить где-то в Латинской Америке, но уже с другой стороны экватора. При переводе самолета в режим автопилота он автоматически развернулся «вверх ногами».
Драматическая переинициализация
В Афганистане двое наводчиков-наблюдателей (канадцы) подсвечивали цель для наведения на нее бомбы. После сброса бомбы в GPS приемнике закончились батарейки. Расчет их быстро заменил. В результате ракета прилетела не туда. Причина проста. После подачи питания в прибор, переменные, отвечающие за координаты цели, автоматически инициализировались координатами текущего местоположения. Наводчики погибли от близкого разрыва.
Летчик Ильюшин
На испытаниях Су-24 регулярно случался отказ аппаратуры бомбометания. Причем происходило это только в том случае, если на цель заходил летчик-испытатель Ильюшин. Причина оказалось тоже не сложной. Только он заходил на цель с точностью, превышавшей машинную точностью. Получался «машинный нуль», после чего шел сбой из-за попытки деления на ноль.
Недотестировали
Этот пример тоже очень характерен, хотя, строго говоря, он и не относится напрямую к разработке ПО, но демонстирует важность тестирования. Возникла эта проблема, скорее всего, на МБР 15А30, причем уже после постановки ее на боевое дежурство. При пуске, ракета выходила из шахты и взрывалась на высоте нескольких метров над землей. Причина оказалась тоже не самой сложной. Рубашка сопла охлаждается окислителем, после чего он поступает в камеру сгорания. В спешке принятия нового комплекса на вооружение к очередной годовщине, в систему пуска двигателя внесли небольшие улучшения, которые не протестировали должным образом. В результате пироклапан срабатывал с большим запаздыванием. Окислитель не поступал в трубки охлаждения, а жаропрочности сопла хватало только на то, чтобы ракета вышла из шахты.
Правильно выбирайте типы данных
Причиной взрыва 4 июня 1996 г. ракеты Ариан-5, была программная ошибка. В системе управления ракеты использовалось модифицированное программное обеспечение ранее успешно работавшее на Ариан-4, но Ариан-5 ускорялась быстрее предыдущей модификации, в результате когда на 40 секунде полета одна из вспомогательных подпрограмм попыталась преобразовать длинное целое значение в короткое без проверки величины значения, то вышло за границы типа, произошло отключение системы управления ракеты, и она была взорвана по команде на самоликвидацию. Прямой (вместе с ракетой-носителем был потерян коммуникационный спутник) и косвенный ущерб от этого программного сбоя был оценен в полмиллиарда долларов.
И снова деление на нуль
История о неприятностях ракетного крейсера ВМС США «Иорктаун». Это экспериментальный, так называемый «умный корабль» (smart ship), важнейшие системы жизнеобеспечения которого управляются компьютерами без участия человека. И что немаловажно – под руководством операционной системы Windows NT 4.0. Так вот, однажды вся эта махина, находясь в открытом море, на три без малого часа встала в полный ступор из-за наглухо зависшего программного обеспечения. Причем произошло это из-за совершенно пустяковой оплошности одного из операторов, занимавшегося калибровкой клапанов топливной системы и записавшего в какую-то из ячеек расчетной таблицы нулевое значение. Ну а далее пошла операция деления на этот самый нуль. С подобной ерундой справляется даже самый дешевый калькулятор, однако здесь в терминале оператора система дала ошибку переполнения памяти. Причем ошибка быстро перекинулась на другие компьютеры локальной сети корабля, началась цепная реакция, и по известному принципу домино рухнула вся бортовая система. Которую удалось восстановить и перезагрузить лишь через 2 часа 45 минут, в течение которых здоровенный боевой корабль оставался по сути дела беспомощен и неуправляем.
Comments
фпв тут не пришей кобыле хвост как говорится)
Хорошая подборка.
Спасибо, очень интересно!
Спасибо, посмеялся отдуши. 😃 А почему ФПВ? Вы уже там что-то успели поделить на ноль? 😃
Что из этого правда, а что байки?
В Афганистане двое наводчиков-наблюдателей (канадцы) подсвечивали цель для наведения на нее бомбы…
Похоже на бред. Какая связь подсветки и GPS?
Ну какая. Фонариком подсвечивали GPS-экранчик с данными по цели.
Даже в программировании бухпрограмм часто встречаюсь с косякими, которые сам же и “запрограммировал” и посмеяться не с кем - мало кто поймет… А уж что говорить об программировании таких огромных задач… В программировании нет мелочей. Увы.
Учусь на программиста. Все преподаватели считают грубейшей ошибкой, если не производишь проверку деления на 0 при КАЖДОМ делении, даже если в тестовых результатах нуля может не встретится!
Другое дело, когда экономят память… тут то и вылазят косяки.
Не… тут вылезли показания приборов… приборы ноль не могли давать… а дали 😃
Есть еще тонкости: 0 расчетный не равен 0 хранимому… Ибо … нуна сравнивать с минимальной “человеческой” величиной… Например если сумма меньше одной копейки - то ноль. А если у них свои величины - то там все еще круче… И проверяй не проверяй. ошибки есть всегда.
Пряморуких программистов не существует в природе, косяки, которые может породить на первый взгляд вменяемый программер, поражают.
Перевернутый Ф-16 и вентилятор в туалете - бред, доказательство оставим в качестве домашнего задания.
История про туалетный венрилятор уже некоторое время курсирует в интернете на правах байки. А как известно - в каждой сказке есть доля сказки…
Там скорее всего дело не в дате. Там долгота меняется с западной на восточную. У меня такая ошибка была в автопилоте для Флайтсимулятора. Тоже самолет не хотел меридиан пересекать пока не ввел обработку особых точек.
Ну ладно, я то чайник, мне простительно. Но когда профи такие ляпы пропускают…
приборы ноль не могли давать… а дали 😃
проверку деления на 0 при КАЖДОМ делении, даже если в тестовых результатах нуля может не встретится!
а про другие величины - врядли, законы физики на другие величины были бы тоже свои, а придумывать новые формулы, изобретать велосипед - не любят особо. Причин много может быть на самом деле, почему ошибка допущена, но в 80% это неграмотность кода.
Похоже на бред. Какая связь подсветки и GPS?
Сильно не пинайте, но по моему в момент подсветки передаются данные с координатами ГПС на ракету, иначе бы она этот “зайчик” очень долго обрабатывала/искала.
Байками они просто переродились, т.к. в основном ошибки идут в вспомогательных модулях и драйверах, где как говорится “ломаться нечему”, но в связке с основной системой это и происходит, а выявить на тестах просто нереально – на грани бреда.
в момент подсветки передаются данные с координатами ГПС на ракету
Подсветка цели в момент поражения и определение ее координат в едином пространстве - суть разные вещи.
ну, про ЖПС и подсветку бред…
а так, есть одна тема.
пытались записать как-то звук выстрелов АК.
и на улице, и в тире, и как только не старались, микрофон кутали и пр…
а требуемый звук получили только записав звук печатающей машинки, с электроприводом, малеха подстроив скорость забоя “иксами” под 10 раз в секунду.
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"3fb2a43c3df955007779595f":{"_id":"3fb2a43c3df955007779595f","hid":2452,"name":"pentajazz","nick":"pentajazz","avatar_id":null,"css":""},"4439f4673df955007778bc22":{"_id":"4439f4673df955007778bc22","hid":13325,"name":"dENISCA","nick":"dENISCA","avatar_id":null,"css":""},"44ca77103df9550077789cf1":{"_id":"44ca77103df9550077789cf1","hid":15771,"name":"ugh","nick":"ugh","avatar_id":null,"css":""},"44e1e8243df9550077789918":{"_id":"44e1e8243df9550077789918","hid":16135,"name":"Виктор","nick":"Виктор","avatar_id":null,"css":"user__m-banned"},"44e896f03df95500777897b0":{"_id":"44e896f03df95500777897b0","hid":16248,"name":"lelik","nick":"lelik","avatar_id":null,"css":""},"452d6b723df9550077788959":{"_id":"452d6b723df9550077788959","hid":17456,"name":"fornara","nick":"fornara","avatar_id":null,"css":""},"47d278403df955007777cf76":{"_id":"47d278403df955007777cf76","hid":32309,"name":"crafter","nick":"crafter","avatar_id":null,"css":""},"48cd2aa03df95500777776c4":{"_id":"48cd2aa03df95500777776c4","hid":38393,"name":"GSL","nick":"GSL","avatar_id":null,"css":""},"497c51343df9550077772c03":{"_id":"497c51343df9550077772c03","hid":43314,"name":"MaestroEv","nick":"MaestroEv","avatar_id":null,"css":""},"49b3c2f43df9550077770dce":{"_id":"49b3c2f43df9550077770dce","hid":45159,"name":"PARSEK","nick":"PARSEK","avatar_id":null,"css":""},"4b682e323df9550077764de7":{"_id":"4b682e323df9550077764de7","hid":60573,"name":"Vаno","nick":"Vаno","avatar_id":null,"css":""},"4cc71da73df955007775ab86":{"_id":"4cc71da73df955007775ab86","hid":73930,"name":"Маныч","nick":"Маныч","avatar_id":null,"css":""},"4d2ed4283df9550077757835":{"_id":"4d2ed4283df9550077757835","hid":78182,"name":"Covax","nick":"Covax","avatar_id":null,"css":""},"4d9373523df95500777542f2":{"_id":"4d9373523df95500777542f2","hid":84798,"name":"lenin959","nick":"lenin959","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"4fe401409970730077107d52","hid":14650,"title":"фпв","html":"<ol>\n<li>Истребители F22 не смогли пересечь 180 меридиан</li>\n</ol>\n<p>При попытке перегнать истребители F22 «своим ходом» с Гавайских островов на базу ВВС Kadena на японском острове Окинава программный сбой «в навигационном обеспечении» вынудил пилотов развернуться и возвратиться туда, откуда вылетели. Теперь стала известна истинная природа «навигационной аномалии».</p>\n<p>Как сообщает DefenseTech со ссылкой на Associated Press, истребители не сумели преодолеть так называемую «линию перемены дат» — условную линию, по разные стороны которой местное время одно и то же (с точностью до часового пояса), но календарные даты различаются на одни сутки. Линия перемены дат проходит по меридиану 180 градусов с отдельными отклонениями.</p>\n<p>Перемена дат осуществляется (и вообще имеет смысл) лишь при использовании местного времени. При пересечении линии перемены дат необходимо либо прибавлять, либо вычитать одни сутки – в зависимости от того, в каком направлении осуществляется движение. По всей видимости, этот парадокс Земного шара, осознанный еще участниками экспедиции Магеллана, был позабыт разработчиками F-22 Raptor.</p>\n<p>Последствия такой забывчивости оказались весьма ощутимыми. У истребителей в полете, отмечает Defense Tech, вышли из строя топливная и навигационная системы, а также – частично – связь.</p>\n<!--cut-->\n<p>Лишь одному пилоту удалось связаться с экспертами разработчика (компании Lockheed Martin). Несколько пилотов попытались перезагрузить ПО истребителя в полете.</p>\n<p>«Победить» ошибку не удалось, однако сами истребители и их пилоты уцелели, что в подобной ситуации следует считать несомненной удачей. Возвращение на Гавайские острова потребовало дополнительной дозаправки в воздухе.</p>\n<p>Впоследствии «навигационную аномалию» удалось исправить, и F-22 все-таки прибыли на авиабазу назначения.</p>\n<ol start=\"2\">\n<li>Об ошибках деления на нуль</li>\n</ol>\n<p>Фирма Motorola испытывала новый процессор для автопилота на истребителе в Израиле. Все было отлажено. Пилоты на испытаниях отправились «огибать рельеф» с севера до юга Израиля. Истребитель прекрасно пролетел на автопилоте над равнинной частью, над горной частью, над долиной реки Иордан, и приближался к Мёртвому морю. Не долетев до него, неожиданно происходит общий сброс процессора, автопилот выключается на полном ходу, пилоты переходят на ручное управление, и сажают истребитель.</p>\n<p>Процессор отправили на доработку и тестирование. Все тесты прошли снова без сбоев. Снова начали реальную проверку. Истребитель пролетел над всеми территориями, но при подлете к Мёртвому морю: общий сброс, выключение автопилота, ручная посадка.</p>\n<p>Длительные тесты не могли выявить никаких изъянов. После продолжительных попыток было найдено, что программы автопилота при вычислении параметров управления по глубоко научным секретным формулам производили деление на значение текущей высоты истребителя над уровнем океана. При подлете к Мёртвому морю высота становилась нулевой, и процессор при делении на ноль давал общий сброс. До этого случая никому не приходило в голову, что самолеты могут летать ниже уровня океана…</p>\n<ol start=\"3\">\n<li>Системы распознавания, как это было в 70-х</li>\n</ol>\n<p>Где-то в конце 70-х годов — испытания американской ЗСУ «Сержант Йорк». Для поражения вертолетов. ЗСУ была оснащена системой распознавания образов.<br>\nВо время испытаний около неё безуспешно кружил вертолет-мишень, которую она так и не смогла распознать. Зато распознала как вертолет вентилятор в туалете, расположенном метрах в 800-х от ЗСУ. И успешно его поразила.</p>\n<ol start=\"4\">\n<li>F-16 вверх ногами</li>\n</ol>\n<p>Испытания американского истребителя F-16 проводились, понятное дело, в северном полушарии. На заключительном этапе самолет решили проверить где-то в Латинской Америке, но уже с другой стороны экватора. При переводе самолета в режим автопилота он автоматически развернулся «вверх ногами».</p>\n<ol start=\"5\">\n<li>Драматическая переинициализация</li>\n</ol>\n<p>В Афганистане двое наводчиков-наблюдателей (канадцы) подсвечивали цель для наведения на нее бомбы. После сброса бомбы в GPS приемнике закончились батарейки. Расчет их быстро заменил. В результате ракета прилетела не туда. Причина проста. После подачи питания в прибор, переменные, отвечающие за координаты цели, автоматически инициализировались координатами текущего местоположения. Наводчики погибли от близкого разрыва.</p>\n<ol start=\"6\">\n<li>Летчик Ильюшин</li>\n</ol>\n<p>На испытаниях Су-24 регулярно случался отказ аппаратуры бомбометания. Причем происходило это только в том случае, если на цель заходил летчик-испытатель Ильюшин. Причина оказалось тоже не сложной. Только он заходил на цель с точностью, превышавшей машинную точностью. Получался «машинный нуль», после чего шел сбой из-за попытки деления на ноль.</p>\n<ol start=\"7\">\n<li>Недотестировали</li>\n</ol>\n<p>Этот пример тоже очень характерен, хотя, строго говоря, он и не относится напрямую к разработке ПО, но демонстирует важность тестирования. Возникла эта проблема, скорее всего, на МБР 15А30, причем уже после постановки ее на боевое дежурство. При пуске, ракета выходила из шахты и взрывалась на высоте нескольких метров над землей. Причина оказалась тоже не самой сложной. Рубашка сопла охлаждается окислителем, после чего он поступает в камеру сгорания. В спешке принятия нового комплекса на вооружение к очередной годовщине, в систему пуска двигателя внесли небольшие улучшения, которые не протестировали должным образом. В результате пироклапан срабатывал с большим запаздыванием. Окислитель не поступал в трубки охлаждения, а жаропрочности сопла хватало только на то, чтобы ракета вышла из шахты.</p>\n<ol start=\"8\">\n<li>Правильно выбирайте типы данных</li>\n</ol>\n<p>Причиной взрыва 4 июня 1996 г. ракеты Ариан-5, была программная ошибка. В системе управления ракеты использовалось модифицированное программное обеспечение ранее успешно работавшее на Ариан-4, но Ариан-5 ускорялась быстрее предыдущей модификации, в результате когда на 40 секунде полета одна из вспомогательных подпрограмм попыталась преобразовать длинное целое значение в короткое без проверки величины значения, то вышло за границы типа, произошло отключение системы управления ракеты, и она была взорвана по команде на самоликвидацию. Прямой (вместе с ракетой-носителем был потерян коммуникационный спутник) и косвенный ущерб от этого программного сбоя был оценен в полмиллиарда долларов.</p>\n<ol start=\"9\">\n<li>И снова деление на нуль</li>\n</ol>\n<p>История о неприятностях ракетного крейсера ВМС США «Иорктаун». Это экспериментальный, так называемый «умный корабль» (smart ship), важнейшие системы жизнеобеспечения которого управляются компьютерами без участия человека. И что немаловажно – под руководством операционной системы Windows NT 4.0. Так вот, однажды вся эта махина, находясь в открытом море, на три без малого часа встала в полный ступор из-за наглухо зависшего программного обеспечения. Причем произошло это из-за совершенно пустяковой оплошности одного из операторов, занимавшегося калибровкой клапанов топливной системы и записавшего в какую-то из ячеек расчетной таблицы нулевое значение. Ну а далее пошла операция деления на этот самый нуль. С подобной ерундой справляется даже самый дешевый калькулятор, однако здесь в терминале оператора система дала ошибку переполнения памяти. Причем ошибка быстро перекинулась на другие компьютеры локальной сети корабля, началась цепная реакция, и по известному принципу домино рухнула вся бортовая система. Которую удалось восстановить и перезагрузить лишь через 2 часа 45 минут, в течение которых здоровенный боевой корабль оставался по сути дела беспомощен и неуправляем.</p>\n","user":"452d6b723df9550077788959","ts":"2012-06-22T05:23:12.000Z","st":1,"cache":{"comment_count":17,"last_comment":"4fe77a169970730077152d1b","last_comment_hid":17,"last_ts":"2012-06-24T20:35:34.000Z","last_user":"3fb2a43c3df955007779595f"},"views":1975,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}