Как один маленький баг угробил 28 американцев
Одно дело, когда твоё выживание зависит исключительно от твоих личных навыков, знаний и умений. Ну и удачи, конечно же. А совсем другое, когда твоя жизнь напрямую зависит от того, насколько качественно кто-то прописал софт для какой-то специфической системы. Например, для управления зенитно-ракетными комплексами «Пэтриот», широко используемыми в США со времён войны в Персидском заливе.
Нет, система работала хорошо, все ракеты злобных арабов сбивались ещё на подлёте, вот только 25 апреля 1991 года на казарму, расположенную на авиабазе в Дахране свалилась крылатая ракета «Скад». 28 трупов, более сотни раненых. При этом «Пэтриоты», что прикрывали авиабазу, работали. Но… Но заглючили. Банально заглючили из-за превышения нормального аптайма системы, не рассчитанной на длительную работу.
Содержание статьи
Что случилось
Во внутреннюю систему ЗРК «Пэтриот» встроен таймер, отсчитывающий аптайм системы. С помощью интервалов в 0,1 секунду, которые было довольно сложно выразить в двоичной системе, поэтому для расчёта использовалось значение меньше 0,1 секунды. То есть не десятичное 0,1, а двоичное 0,00011001100110011001100. Почти то же самое, особенно для не слишком точных расчётов. В принципе, при регулярном обновлении системы – никаких проблем. Внутренний таймер сбрасывался, погрешность тоже. Поэтому допуски оказывались в пределах допустимого, вражеские ракеты не пролетят. Но на дворе был всего-то 1982 год.
А за 10 лет технологии шагнули несколько вперёд, в том числе и в деле создания баллистических ракет, летящих на сверхзвуковой скорости. А «Пэтриоты» с ними хоть и могли соперничать, но с трудом. И вот тут каждая доля секунды была на счету. Так что проблему с неточностью решено было исправить.
Но не снести старое и вместо него поставить новое, а ДОПОЛНИТЬ. Вот и вышло так, что в системе шло одновременно два отсчёта времени – один нормальный, а второй – устаревший. И чёрт его знает, когда и какой использовался. И да, чем больше был аптайм – тем выше было различие между этими показателями.
Впрочем, сама концепция «Пэтриотов» не предусматривала их работу в непрерывном режиме длительное время. Быстренько развернул, проконтролировал, а когда войска переместились – выключил и переехал вместе с ними. Вот только ЗРК пришлось таки выполнять функции, ему не свойственные. Например, в Израиле.
И евреи быстро поняли, что за 20 часов непрерывной работы, ошибок набирается столько, что система перестаёт отслеживать реальное положение цели. Она её тупо не видит. Точнее, видит, но не может предсказать, где она будет находиться, поскольку расчёт «Range Gate Area» завязан как раз на внутренний аптайм системы. Поняли и доложили куда надо. И армия США даже начала оперативно создавать патч, который эту проблему бы устранял. И потихоньку развозить его вручную по местам базирования ЗРК.
И всё бы ничего, но военное командование, узнав о реальной проблеме, выдало приказ – «не держите систему включённой слишком долго». Ага, без конкретного указания времени – тех самых 20 часов. Так что этот приказ был воспринят, скорее, как пожелание, а не как чёткое указание.
И «Пэтриоты» в Дахране работали без перерыва уже более четырёх суток. Ну просто конец войны, можно же расслабиться, правда? А то включать, выключать, настраивать, проверять – это же слишком долго. Да и 26 апреля должны были новый патч как раз подвести – всё по графику. Увы. 28 погибло, более сотни ранено. И всё из-за того, что кто-то предпочёл не менять всю систему, а сделать «надстройку». Кто – теперь уже никак не узнать, хотя командование армии США и активно пыталось.
Ах да, если вы сейчас начнёте злорадствовать на тему того, какие эти америкосы тупые — задумайтесь о том, как пишут софт российские программисты… И что наши системы ЗРК на прочность в таких условиях просто-напросто никто не испытывал. И нет, это не та ситуация,когда «Чем проще — тем лучше». Солдат с биноклем может и заметит приближающуюся ракету, но сделать с ней ничего уже не успеет.