itemscope itemtype="http://schema.org/WebPage"

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

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

/
64K
33
31
827

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Мнение редакции не всегда совпадает с мнением автора.
Hoвости СМИ2
Битва при Сволли
Двое против тридцати

5 сентября 1612 года маленькая английская эскадра из четырех кораблей — Red Dragon, Hosiander, James и Solomon, — бросила якорь на рейде индийского порта Сурат в устье реки Тапти. Командовал ей капитан Томас Бест. Его экспедиция была последней отчаянной попыткой Ост-Индской компании наладить в здешних краях торговый пост. В 1609 году король Иаков, разозлённый отсутствием результатов, дал ей три года сроку. Если бы Бесту не удалось добиться успеха, Компании оставалось бы несколько месяцев.

27K
22
7
0
15 головоломных фактов о войне в Корее

Что мы знаем о чучхе? Ничего. И то не все. Корейская война 50-53 годов — из разряда тех исторических событий, где все участвующие стороны «предательски напали из засады», виноватых не найти, да и кому перед кем извиняться — непонятно.

71K
83
108
30
Дарфурская резня
Кровавое наступление сахарских песков

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

44K
26
4
73
Война за ухо Дженкинса
«Псс, не хотите немного Casus Belli?»

«Сasus belli» — формальный повод к войне. Этот термин ввели в оборот юридически грамотные римляне, задолго до нас знавшие свои права. Классический пример повода к войне — пресловутый «сараевский выстрел». Но история знает и куда более сюрреалистические casus belli. Не правда ли, занятно, когда в названии войны присутствует часть человеческого тела? Осталось ответить на вопрос: кто, кому и что отрезал, а главное, зачем? И почему только ухо? Чего так скромно? Отправимся за ответами в не столь далёкий XVIII век.

17K
25
2
63
4 примера идиотских поражений
Когда «логику придумали трусы!»

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

40K
54
0
76
Сэндвич «Цезарь»
Самая необычная осада древности

«Пришёл, увидел, победил», — сказал про себя великий Цезарь в 47 году до н.э. Однако в 52 до н.э. крылатое выражение могло бы звучать как «пришёл, увидел, осадил». Или, если ещё точнее: «пришёл, организовал инженерно-сапёрные работы, построил осадные укрепления, чуть было не лишился головы, когда подошло галльское подкрепление, но в последний момент, благодаря контратаке и личному обаянию, всё-таки победил».

20K
26
5
93
Атака лёгкой кавалерии здорового человека
Как польская конница совершила невозможное и открыла Наполеону дорогу на Мадрид

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

29K
27
27
249
Самые глупые поводы для войны (1/2)
За что умирали люди: футбол, гуано и религиозные видения

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

23K
20
4
100
Самые глупые поводы для войны (2/2)

В первой части нашей подборки перечислены далеко не все идиотские причины кровопролитных войн. К сожалению, таких примеров в истории было довольно много. Вот ещё несколько.

21K
15
10
111
Час презрения: террористическая катастрофа в Будённовске

Теракт лета 1995 года в Будённовске стал одной из самых страшных катастроф в истории современной России. Его последствия ушли далеко за рамки простого злодеяния с массовыми жертвами. Произошёл перелом всей войны в Чечне, а эпоха массового террора только открывалась…

29K
182
166
1.9K
Белый спецназ: почему в рядах американских коммандос так мало нацменьшинств?

Спасибо голливудским боевикам, про американский спецназ сегодня знают даже дети. На земле, в небесах и на море крутые парни наводят ужас на врагов, защищая свободу и демократию. И конечно, в духе политкорректности, как минимум треть этих бойцов — из нацменьшинств. Что совершенно противоречит реальности. Почему в рядах коммандос так мало чёрных?

27K
139
111
1.6K
Советские БМП: не первые и не лучшие?

Советские БМП — один из поводов для гордости за наше танкостроение. Они и первые в своём классе, и всегда превосходили западные аналоги, как часто можно услышать. Вот только при более внимательном изучении вопроса всё выглядит уже не так однозначно…

25K
63
161
484
Спецназ мира: чьи нормативы жёстче?

Хотите попасть в ряды мирового спецназа? Легче лёгкого! Если, конечно, вы готовы к самым жёстким физическим испытаниям. Каким именно — рассказываем в этой статье.

25K
54
32
380
Мастерами кунг-фу не рождаются: китайских пограничников научат боевым искусствам

Мастерами кунг-фу становятся! После кровопролитной драки с индийцами китайское командование озаботилось рукопашной подготовкой бойцов. Для подготовки пограничников Тибета сформирован специальный отряд из инструкторов боевых искусств.

24K
28
22
56
Супернадёжность, дешевизна и старость: 5 мифов об автомате Калашникова

70 лет в строю, десятки миллионов выпущенных автоматов по всему миру — воистину легендарное оружие! А от легенд, как известно, и до мифов недалеко. Мы собрали пять самых популярных из них.

18K
125
103
864
Швейцарский армейский — морская свинка в мире ножей

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

18K
72
70
460
За счёт чего рулили «Катюши»?

Неуправляемые реактивные снаряды славятся низкой кучностью. Так почему БМ-13 «Катюша» стала легендарным оружием Победы — или же это просто ещё один миф? Мы разобрались.

17K
108
161
809
Идиоты, слоны и вундервафли: 5 самых неравных битв античности

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

16K
91
40
440
Средневековые убийцы, или О чём на самом деле сказка про Красную Шапочку?

Все мы в детстве слышали историю про девочку и волка. Но вряд ли догадывались, какая тьма, какой ужас стоят за ней. О событиях, ставших основой всеми любимой сказки, — в материале WARHEAD.SU.

78K
122
61
979
Ликбез: численность средневековых армий

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

70K
66
72
591
Монгольские нукеры против рыцарей: битва при Легнице

Сравнивать крестоносцев и монголов, казалось бы, заведомо бесполезное занятие. Ведь где рыцарство, а где хитрые азиаты? Однако 9 апреля 1241 года под Легницей, что в Силезии, произошла великая битва, которая поможет ответить на вопрос: какая же военная культура прошлого превосходит остальные?

66K
71
51
1.1K
Партизанские реалии: насколько точными были полевые сводки?

«Чем дальше в лес, тем толще партизаны», — гласит известная шутка. В начале 1944 года, когда Красная армия освободила значительную часть Украины, штаб партизанского движения захотел проверить — а так ли были точны сводки?

63K
73
76
862
Битва за Радзехов: анти-Расейняй Великой Отечественной

«Советские КВ и Т-34 были неуязвимы для немецкой артиллерии летом 1941 года!» — такие утверждения можно встретить и сегодня. Обычно дальше вспоминают прибалтийский Расейняй и одинокий КВ против 4-й танковой группы. Но ход боевых действий подсказывает, что была и полная его противоположность. Имя ей — Радзехов.

62K
83
37
719
Если бы Союз проиграл: 5 альтернативно-исторических мифов о будущем Третьего рейха

Что было бы, если бы СССР проиграл Великую Отечественную? Как заявляют фанатичные любители немецкого орднунга, в этом случае Германия стала бы непобедима, завоевала бы весь мир, вышла бы первой в космос… Вот только такая оценка не выдерживает критики. WARHEAD.SU подробно разобрал пять излюбленных тезисов рейхофилов.

54K
73
407
703
10 «школьных» заблуждений о предвоенных репрессиях в Красной армии

Красную армию обезглавили перед войной. 1941 года не было бы, если бы не 1937-й. А может быть, наоборот, репрессии — это очищение? Так как же всё было на самом деле?

50K
106
378
786
«Месть за муки»: как сражались освобождённые из плена красноармейцы

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

47K
68
83
1.7K
Норвежцы в Карелии: разгром эсэсовских добровольцев

Норвегию оккупировали в самом начале Второй мировой. Дальнейшее участие страны в войне ограничилось подпольной войной или боевыми действиями добровольцев. Многие попали в армии союзников, но некоторые служили в СС. Именно им и не повезло оказаться в Карелии в июне 1944 года.

45K
43
71
933
10 «школьных» заблуждений о русской военной истории

На Куликовом поле не было пехоты, стрельцы не воевали в красном, Карл XII не нападал на Россию!

271K
124
83
897
Плавучие ветераны Второй мировой: самые старые действующие военные корабли

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

145K
37
13
81
Острее бритвы: как правильно точить ножи

Пришли на шашлыки, а тупой «дедушкин» ножик не режет мясо? Вовремя затачивать надо было! Чтобы вы больше не попали впросак в такой ситуации — наша статья о том, как же правильно «лечить» затупившиеся клинки.

137K
75
55
467
Взгляд Запада: каким видели советский спецназ в Афганистане

Советского спецназа на Западе очень боялись — и заслуженно. О наших бойцах писали в зарубежной прессе, рассказывали душманы. За Spetsnaz пристально следили за океаном. О подвигах бойцов в Афганистане ходило много легенд. Какие из них правда? Сейчас расскажем.

132K
96
24
869
Ликбез: зачем танку бревно

Танк — это вам не шуточки, а грозная боевая машина, обвешанная орудиями смерти! Но кроме привычных всем пушек, пулемётов и гусениц на нём частенько можно увидеть самые странные навороты. И по степени непонятности одно из первых мест занимает обычное бревно. Казалось бы, зачем оно на танке? Мы разобрались.

103K
56
33
457
Советская пехота держит удар: как растерялись «тигры»

«Разгромить!» — такой безапелляционный приказ получил свежий 507-й тяжёлый танковый батальон «тигров». Его машины 21 марта 1944 года выгрузились с платформ в районе Львова прямо к началу нового наступления Красной армии. Ожидания немецкого командования по поводу чудесной силы «тигров» оказались обмануты самым подлым образом.

102K
101
29
742
Тест: Какой вы военачальник?

Всегда мечтали стать Верховным Главнокомандующим, но что-то мешало? Опыт знаменитых военачальников прошлого поможет подготовиться как следует и избежать ошибок. Пройдите тест WARHEAD.SU и узнайте, какой стиль командования войсками ближе именно вам.

98K
10
4
276
Как начинают войны: ликбез

Чтобы пересчитать все горячие точки планеты в 2017, вам не хватит пальцев обеих рук. В 2016 году в них погибло более 130 тысяч человек, что значительно меньше, чем в 2014, но примерно столько же, сколько в 2015. Хотя официально ни одной войны сейчас не идёт. Война вообще-то запрещена.

86K
44
8
274
Кто такие гренадеры: могучие великаны военной истории

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

81K
46
8
358