• РЕГИСТРАЦИЯ

Не пропатчили: как один маленький баг угробил 28 американцев.

10 8277

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

      Вечером 25 февраля 1991 года, уже под самый конец операции «Буря в пустыне», на американскую авиабазу в саудовском Дахране свалился иракский «Скад». Вот, казалось бы, причём здесь округление дробей?

     Ракета разнесла казарму 475-го отряда квартирмейстерской службы армии США, ответственного за очистку воды. Взрыв убил 28 человек — это пятая часть всех погибших американцев за всё время войны в Заливе. Ещё около сотни получили ранения.

Последствия от попадания "скада"

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

Как выяснилось, вину за смерть 28 человек взял на себя софт зенитного комплекса.

Давай округлим это по-быстрому

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

     Внутренний таймер ЗРК Patriot устроен как счетчик количества интервалов времени, прошедшего с момента включения системы. Длина такого интервала — 0,1 секунды. Чтобы перевести количество этих отрезков в секунды, его, понятное дело, нужно разделить на 10. Что для этого предложили разработчики? Естественно, умножить на 0,1.

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

Теперь вторая часть Марлезонского кодирования. Числа-то двоичные.

Точного представления десятичной дроби 0,1 в двоичном виде не существует — оно может быть только приблизительным.

      Поэтому бодрые наследники древнего Вавилона из корпорации Raytheon вместо десятичного 0,1 загнали в систему двоичное число 0,00011001100110011001100. Оно немногим меньше требуемых 0,1 — примерно на одну десятимиллионную. Вот на это число радостно и умножили, полагая, что проблема решена.

     Кодеры действительно были правы, когда клеили этот «лейкопластырь». При расчёте параметров движения цели система оперирует близкими значениями времени с единой и очень небольшой систематической погрешностью. Поэтому никаких проблем быть не должно. Ситуацию признали нормальной для использования в реальных условиях — и забили. В таком виде комплекс и приняли на вооружение в 1982 году.

Если вчера война

     А дальше? Дальше Саддам Хусейн более не смог выносить собственной крутости в одиночку и решил поделиться ею с окружающими, захватив летом 1990 года Кувейт. Саддам пацан был мутный и дерзкий, но не папуас какой, а вполне упакованный. Имелись у него и оперативно-тактические ракеты, самостоятельно модернизированные. 

     Весь этот арсенал создавал проблему. Потребовалось срочно переделывать батареи Patriot для Ближнего Востока, чтобы те могли перехватывать баллистические цели, идущие со значительной скоростью — 1700 м/с и больше. А это, считай, гиперзвук; и среди аэродинамических целей, под которые первые версии Patriot рассчитывались, такие скорости не встречаются. Им больше самолёты подавай или крылатые ракеты.

Евгений Башин-Разумовский.                                Эксперт по историческим вопросам:

"В общей сложности на театре военных действий было развёрнуто 33 батареи Patriot. В том числе 22 батареи со 132 пусковыми установками — в Саудовской Аравии; четыре (из них две американские и две датские с 26 пусковыми установками) — в Турции; а начиная с 19 января, дополнительные силы ПВО были развёрнуты и в Израиле. Всего территорию Израиля прикрывали семь батарей: две израильские, четыре американские и одна датская, с 48 пусковыми установками."

     Raytheon начал спешно улучшать систему. И, как оно бывает, доулучшался. Некое кодирующее туловище невыясненного системно-аналитического образования придумало устранить баг с неточным определением 0,1 и написало новую процедуру умножения.

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

     Вуаля! В системе завелось ДВА внутренних значения времени, используемых при расчёте РАЗНЫХ параметров. Различие между ними накапливалось тем сильнее, чем больше времени прошло с момента включения.

     Теперь погрешности в математике ЗРК уже начали что-то решать, но об этом никто не думал. Потому что штатные проверки комплекса после переделки показывали, что всё ОК. Согласно программе испытаний: «Пункт 1: включили систему. Пункт 2: выставили режимы. Пункт 3: всё работает. Пункт 4: выключили. Переходим к следующему разделу».

     Но никто не проводил «endurance test»: проверку на длительное дежурство на одном месте да против скоростных целей. А оно и зачем, если Patriot — это мобильный войсковой ЗРК для прикрытия боевых порядков? На одном месте ему по всем наставлениям стоять не следует, в том числе, в интересах собственной выживаемости.

     Первыми за аномалию в работе комплекса зацепились не в США, а в Израиле. Развёртывающиеся боевые порядки страна прикрывать особо не собиралась, а вот собственная территория Израиль интересовала. Ну и по причине обычной национальной запасливости.

     У ЗРК Patriot нет своих собственных накопителей для «логов» работы, поэтому комплексам полагались внешние. Но в армии США накопители не любили. Ходило вполне обоснованное мнение, что их софт какая-то очередная вавилонская ключница делала, и накопители периодически вешают всю систему. Поэтому операторы американских ЗРК на Ближнем Востоке их обычно не подключали, а вот в ЦАХАЛе всё сделали по инструкции.

Какой шлемазл это сделал?

     Первые иракские «Скады» стартовали в сторону Израиля 18 января 1991 года. Израильские офицеры, однако, нашли время отсмотреть «логи». Уже 11 февраля от них в США прилетел первый «багрепорт»: после нескольких часов непрерывной работы ЗРК наблюдается необъяснимый дрейф параметров при переходе от режима обнаружения к сопровождению цели.

     Радар при работе «на сопровождение» смотрит во вполне определенную узкую область пространства, где должна быть цель — так называемую «Range Gate Area», RGA. А ракета «Скада» быстрая, и надо чётко понимать, где она будет на следующем такте работы. Положение RGA определяется опережающим расчётом в зависимости от координат и скорости цели. А эта математика прямо завязана на точный отсчёт времени. А время у нас отсчитывается… ну, вы уже видели, как.

     И с каждым часом отсчитывается всё косячнее. Израильтяне увидели, что границы окна, обсчитанные на этом косячном времени, начали ехать. Цель уже не посередине RGA, а ближе к краю, за 8 часов смещение процентов на 20 от центра окна.

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

     «Да ну, фигня, — отмахнулись генералы в Штатах. — У системы нормальный аптайм всего несколько часов. Зачем её вообще держать включённой постоянно? Ладно, по мере сил всё пропатчим и заапдейтим».

     Надо заметить, что софтину ЗРК Patriot за тот нервный период с осени 1990 года перепатчивали уже аж шесть раз. Причем в пожарном порядке: надо было обучить аппарат противостоять иракским «Скадам» и «Аль-Хусейнам», и какая-то идиотская проблема многочасовой работы никого не волновала. Тем более, что накатывался один такой патч пару часов минимум, и всё это время комплекс должен стоять мёртвым куском железа. Кому это надо прямо во время войны?

     Но 16 февраля патч таки написали и начали помаленьку ставить на комплексы. 21 февраля военное начальство, испытав нехорошее предчувствие в области собственных кресел, дополнительно разослало дежурную инструкцию для операторов ЗРК. Она состояла из одной фразы: не держите систему включённой «слишком долго», а то будут проблемы с захватом цели.

     Но сколько это — «долго» — до разъяснений не снизошли.

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

     … Дежурная батарея «Альфа», принадлежавшая батальону, что прикрывал авиабазу Дахран, на вечер 25 февраля 1991 года имела аптайм больше четырёх суток. За этот период накопленная ошибка составляла уже 0,343 секунды. Для баллистической цели типа «Скада» это означало смещение центра RGA почти на 700 метров относительно реального положения ракеты. И это при габарите самого RGA около 300 метров.

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

Ракета «Скад» своё дело сделала.

     А утром 26 февраля на Дахран приехали совершенно ничего не подозревавшие офицеры с накопителями. Они привезли… патч, исправляющий ошибку. Ну, просто по планам командования именно 26 февраля батарея «Альфа» должна была получить обновку. Раньше было никак: все борта на Ближний Восток забиты — всем что-то надо.

Борьба с дятлами

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

     Во-первых, если вы склеили софт слюнями, и он заработал, отдавайте себе в этом отчёт. Умейте видеть пределы прочности ваших заплаток.

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

     В-третьих, когда вы что-то исправляете в уже работающей системе, посмотрите на её устройство сверху и подумайте, как ваши действия отразятся на том, что она ДО ВАС делала ВРОДЕ БЫ нормально.

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

Антон Железняк.                                                      Эксперт по техническим и инженерным вопросам. 

     "В общей сложности в ходе первой войны в заливе вооруженные силы Ирака запустили 88 ракет «Скад». 12 из них были выпущены по Израилю до развёртывания на его территории ЗРК Patriot, из 76 оставшихся 47 были обстреляны с расходом 158 зенитных ракет. При этом, по данным комиссии конгресса, только 86 ракет были запущены по реальным целям, а 72 — по ложным, либо по обломкам уже подбитых «Скадов», принятых за ракеты. Точное число сбитых «Скадов» оспаривается до сих пор, равно как и критерии подсчёта."


Источник: Самат Кудайбергенов 

                   Война и Техника 

                   21 января 10:15

Не равнодушный

    Новое дворянство. Как грабил Россию заместитель министра обороны

    За несколько дней, прошедших с момента ареста заместителя министра обороны, в Сети опубликовали множество объектов недвижимости стоимостью в миллиарды рублей (а, может, и долларов), при...

    Ваш комментарий сохранен и будет опубликован сразу после вашей авторизации.

    0 новых комментариев

      greengrey 15 апреля 15:28

      А чё, разве так можно было!?

           Летом не мало было статей о требованиях скотоводов повернуть сибирские реки вспять. Сейчас мы смотрим трагедии связанные с половодьем в том числе на реках текущих по территории Казахстана.     Половодье регулярное природное явление, которое происходит каждый год. Видно скотоводам за 30 с лишним лет была не судьба постр...
      189
      greengrey 23 марта 14:05

      Пир во время чумы.

           Когда-то давно, до начала СВО, я комментировал восторженно-хвалебную статью о  чемпионе РПФЛ ФК "Спартак". У меня нет личной неприязни к этой команде, просто я отметил, что в то время, когда убивают женщин и детей Донбасса не совсем этично проводить развлекательные мероприятия. Какой же поток негатива обрушился на меня, основные...
      120
      greengrey 21 февраля 07:43

      Тебе бы не картины, начальник, тебе бы книжки писать.

           Не так давно на КОНТе появился экстравагантный автор под ником "Пётр Иванович Дубровский", не признающий чужого мнения и раздающий "баны" на право и на лево, чего и я удосужился.     Но последним "перлом" "На смерть Навального. Ну что, советники и помощники Путина вы снова жидко обо...лись?" я был шокирован: не возможн...
      184
      greengrey 22 января 04:00

      «Ад полон добрыми намерениями и желаниями» Джордж Герберт

           Главный редактор медиагруппы "Россия сегодня" и телеканала RT Маргарита Симоньян предложила ввести стопроцентный налог на роскошь, чтобы богатые люди помогли фронту и бойцам в зоне спецоперации. Благое намерение, с этим трудно поспорить, но необходимо просчитывать последствия. Неужели богатенькие смирятся с потерей энного количества "бабла"? Ни в к...
      200
      greengrey 2 января 19:28

      Подмена понятий.

           Сегодня Фриц Морген "скопирастил" с "LiveJournal" "размышеление" Олега Макаренко о роли марксизма в США. https://cont.ws/@Fritzmorgen/2708393     Я не ръяный сторонник макскизма, с меня "по горло" хватило госэкзамена по "Научному коммунизму". Разбор по косточкам теории коммунизма необходимо оставить для изучения с...
      393
      greengrey 16 декабря 2023 г. 03:26

      Плач по Акуниным, Быковым и прочим русофобам.

           Вступил в полемику на просторах Конта с "новоделом" под ником "Дмитрий Комаров". Думал отделаться комментариями, но на последний его комментарий места маловато будет.     Началось всё с его ответа на коммент Сергея Комарова к статье Дениса Григорюка "Стоило ли начинать СВО":       Т.е....
      260
      greengrey 25 июня 2023 г. 19:09

      Один день...

            Бунт Пригожина, угроза государственного переворота и прочие заголовки событий, как бы влияющих на судьбу мира.     А мне сегодня позвонил товарищ, ему из зоны СВО привели на опознание труп сына, ему абсолютно по*уй судьба мира, у него сын погиб....
      353
      greengrey 12 июня 2023 г. 14:25

      РОССИЯ - 12 июня.

           И он опять настал - день независимости России. Самый неадекватный "праздник" нашей современности: "День принятия Декларации о государственном суверенитете Российской Федерации." От кого мы стали независимы? Россия, как преемница Руси существовала с 24 апреля 1387 года, правда только в титуле митрополита Киприана, собственно...
      357
      greengrey 12 февраля 2023 г. 18:01

      РОССИЯ

           Неожиданно, вечером жена напела: "Я люблю тебя Россия..." Сразу вспомнил что эту песню исполняла Галина Ненашева более 50 лет тому назад. Но как сегодня она оказалась актуальной! Предлагаю прослушать:  ...
      645
      greengrey 5 февраля 2023 г. 16:45

      Зачем нам фильм "Чебурашка"?

           Много читал отзывов о фильме "Чебурашка". Умные взрослые с умным видом рассуждали о художественной ценности/бездуховности этого фильма. О прекрасной/бездарной игре артистов. Ответ я услышал только сейчас: шёл мимо остановки общественного транспорта, на остановке маленький человечек 3-4 лет самозабвенно напевал: "Пусть бегут неуклюже ...
      482
      greengrey 3 февраля 2023 г. 03:45

      Величественная река Русь.

                Очередная статья про "беглецов" подтолкнула меня высказать свои мысли.      Течёт река, полноводная, величавая. Течёт неспешно, полная внутри себя всевозможной жизни, которая не вечная, постепенно отмирает, каждая в свой срок и постепенно оседает на дно реки, превращаясь в то, что мы называем ил.&nb...
      393
      greengrey 17 января 2023 г. 04:17

      Русский праздник НОВЫЙ ГОД?

           Сегодня, точнее в том числе и сегодня мы воюем в очередной раз с объединённым Западом: страны ЕЭС + страны НАТО, население Украины - это расходный материал в их руках.      1240-1245 гг. это был Тевтонский орден, Орден меченосцев, Швеция с Финляндией, Венгрия, Литва, Польша, Литва и стоящий за ними папа Римский.&n...
      266
      greengrey 5 января 2023 г. 20:05

      От героев былых времён...

           24 июля 1941 года старший сержант Василий Павлович Кисляков 7 часов один сдерживал превосходящие силы противника, за что ему было присвоено звание Героя Советского Союза.     КИСЛЯКОВ ВАСИЛИЙ ПАВЛОВИЧ (1916-1990) - Герой Советского Союза. Родился в с. Среднее Бугаево Усть-Цилемского р-на Коми АССР. Работал в Печорском ...
      822
      greengrey 18 декабря 2022 г. 21:15

      ФЕЕРИЯ

           Эти два человека сделали финал чемпионата мира по футболу феерическим и инфарктным.      Лионель Андрес Месси Куччиттини - символ уходящего поколения великих. Килиан Мбаппе Лоттен - символ нового поколения великих.     Эти два человека сделали этот фееричный финал....
      1812
      greengrey 18 декабря 2022 г. 07:25

      Тупой, ещё тупее...

           Меня всегда удивляют безапелляционные заявления некоторых комментаторов:      Ладно что комментатор напоказ выставляет свою тупость, свой уровень ничтожного мышления (пнуть мёртвого льва, зная что тот не ответит, может только шакал), так ещё и публично показывает свой уровень полной безграмотности - он не знает ког...
      376
      greengrey 17 декабря 2022 г. 11:20

      Нашествие неведомых насекомых на Сибирь

           Закончился дачный сезон: дело было вечером, делать было нечего. ...
      234
      greengrey 14 декабря 2022 г. 23:49

      Франция -Марокко

           Что ж, обидно, закончился второй полуфинал чемпионата мира по футболу, счёт 2:0 в пользу Франции, но закономерно. Была битва, особенно во втором тайме. Отдать должное марокканцам - африканское государство впервые в истории мирового футбола вышло в полуфинал. Лучше бы французы проиграли - это мнение аналитиков, причём не футбольных, а...
      399
      greengrey 14 декабря 2022 г. 02:28

      Неподражаемый Лионель Месси

           Завершился первый полуфинальный матч Чемпионата мира по футболу в Государстве Катар. Несмотря на наличие у хорватов лучшего вратаря ЧМ они пропустили три мяча в свои ворота. Потому что у аргентинцев играл лучший футболист мира Лео. И если первый его гол с пенальти обыденное явление - стандартное положение, попробуй Месси не забить, т...
      391
      greengrey 5 ноября 2022 г. 21:10

      Казахстан союзник?

           Я родился на юге Западной Сибири, в западной её части, которая по недоразумению называется Северным Казахстаном. Почему по недоразумению? Да потому что в школе на два класса у нас был аж один казах. Согласитесь - веский довод дать название территории, на которой проживало подавляющее русскоязычное население Казахстаном. Предки мои пе...
      2364
      greengrey 30 сентября 2022 г. 12:50

      Снег кружится, летает, летает...

           Коротко: в южной Сибири удачно прошли тактические учения ВС РФ. Высылаю фотоотчёт.      Мёрзни, мёрзни волчий хвост....
      752
      Служба поддержи

      Яндекс.Метрика