Пользователь
57,4
рейтинг
5 мая 2014 в 01:12

Разработка → Из-за программного бага задержали более 200 авиарейсов: не летайте выше 65535 футов



Самолёт-разведчик американских ВВС вызвал серьёзный сбой в программном обеспечении центра управления воздушным движением Калифорнии, из-за чего пришлось задержать вылеты сотен гражданских рейсов в нескольких аэропортах юго-западного региона США и внепланово посадить самолёты, которые направлялись в этот регион, сообщает агентство NBC News.

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

U-2 летел на высоте более 60 000 футов (более 18 км) над уровнем моря и никак не мог причинить проблемы гражданским судам на гораздо более низкой высоте. Он летает над Калифорнией и другими регионами на такой высоте уже десятилетиями, и никогда не было проблем. Но недавно в аэропортах установили новое программное обеспечение для мониторинга полётов в рамках проекта ERAM (En Route Automation Modernization), стоимость проекта составила $2,1 млрд. Скорее всего, новая система ошибочно интерпретировала высоту полёта U-2 и посчитала, что он может повлиять на другие рейсы.

Есть предположение, что причиной программного сбоя стала возможность U-2 летать на высоте выше 65 535 футов. Впрочем, передатчик U-2 способен сообщать произвольные координаты своей высоты на наземные станции. По умолчанию он запрограммирован на максимальное значение FL600 (60 000 футов), и даже если самолёт летит гораздо выше, они всё равно будет передавать значение FL600.

Другая версия, что это была какая-то новая модификация самолёта с новым передатчиком. Возможно, он всё-таки передал на базу высоту более 65 535 футов, и новое программное обеспечения ERAM среагировало не лучшим образом. Но тысячам пассажиров, опоздавшим на рейсы, от этого не лучше.
Анатолий Ализар @alizar
карма
751,5
рейтинг 57,4
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (44)

  • +35
    и даже если самолёт летит гораздо выше, они всё равно будет передавать значение FL600.

    Вот это костыли
    • +15
      Это все, скорее всего, из-за секретности. Высоты на которых проводят свои операции военные засекречены, и именно поэтому передатчик останавливается на FL600.
      • +4
        Нет, просто выше 60000 футов неконтролируемое пространство.
        • +3
          Нет, класс E в США.
  • +1
    16 бит (2 октета) выделялось в ПО. Видимо писали тесты, которые должны пройти, а не которые должны проверять отказоустойчивость)
    • +5
      Это они попытались 16 бит сэкономить от 32 битного int-а. Оптимизаторы, однако))
      • 0
        5 старушек — рупь!
      • 0
        Не факт, что у них int изначально был 32 битный ;) М.б. как раз 16 битный, а то и вовсе 8 битный. А потом получилось так, что формат структуры оставили для совместимости :) В общем то обычная практика для долгоиграющих проектов, к которым военные как раз относятся. Помимо этого существуют ещё «зипы» — оборудование, которое должно спокойно хранится несколько десятилетий, и м.б. быстро использовано в качестве замены в случае отказа установленного.
        • 0
          Ну вот там сидели два программиста и обсуждали:
          — Слушай, у нас высота может большая быть сделаем ее 32-битной.
          — Да не, не будет никто так высоко летать, а у нас железка 16-битная. Так что давай делать 16 бит высоту, съэкономим память, и работать побыстрее будет.

          Так и получается потом, что потом самолеты под землю уходят при переполнении интов. :D
  • +31
    Читал о похожей проблеме в израильских ВВС — программное обеспечение самолётов не было расчитано на отрицательные высоты и стабильно падало при полётах над Мёртвым Морем, уровень которого значительно ниже уровня моря.
    • +8
      Старая байка. Но про американцев на учениях в Израиле. Там высота до -400 метров. Местные самолеты хоть и американские, но с переделанной электроникой. И летают на них целыми днями. А вот янки на своих прилетели на учения.
    • 0
      В «Гигабайтах власти» еще примеры были. Достоверность не знаю.
    • +2
      Я слышал версию, что ПО не падало, а просто самолет переворачивался кверху брюхом на отрицательных высотах :)
      • +7
        И задом летал, с отрицательной скоростью :)
        • 0
          Все, нашел. Переворота не было, был крэш и ребут. А переворот, как сказали ниже, был из другой оперы: при пересечении экватора.
        • 0
          Не потреблял топливо, а вырабатывал.
        • 0
          • +2
            Австралия. Полет нормальный.
    • 0
      Похоже это и есть то самое ПО, поскольку сломалось при переполнении uint16, а не на int16.
  • –5
    Код писали индусы? :)
  • +36
    Товарищей, которые 8-битным счётчиком на установке по радиотерапии убили несколько десятков человек (из-за переполнения подавалась бешенная доза радиации вместо указанной) перевели в авиационный отдел? Они сделали выводы из предыдущей ошибки и больше никогда не используют 8-битные счётчики.
  • +4
    В чём проблема использовать нормальные числа? Какие могут быть двухбайтовые целые числа в 2014-м году? Ну что за экономия на спичках?
    • +15
      Обратите внимание на новость — «официальные источники молчат, но мы думаем, что дело было так». Вспоминается серия из Южного Парка. «Переселенцам помогали инопланетяне. Не верите? А вы можете предоставить доказательства, что инопланетян там не было? Вот то то же!» Как-то так делаются новости…
    • 0
      Учитывая, что самолёт U-2 выпускается уже почти 60 лет, еще неизвестно когда на этом экземпляре последний раз софт меняли.
      • +1
        Ну тут проблема не в самолете. На нем ПО не обновляли. Летал он там десятилетиями, а проблема возникла после обновления системы мониторинга на земле.
      • 0
        Та модель, которая летает сейчас, выпущена в начале 80-ых. К тому же, эти самолеты регулярно обновляются
    • +2
      Вот я сегодня схожим вопросом озадачился, когда документация IBM на DB2 сказала мне, что имя администратора базы в линуксе не может быть более 8 символов. В противном случае база даже не поставится.
    • 0
      Запросто — микроконтроллеры наше всё. Ещё пять лет 16-битные контроллеры широко применялись. И дадже сейчас применяются.
      Во-вторых, система могла и 20 лет назад разрабатыватья — оно с авиационной безопасностью свзяано и потому никто не торопится менять.
      И самое главное — есть языки программирования, где целое до сих пор 16 бит — вот такой сюрприз.
  • 0
    Это как в тех случаях когда первые версии F-22 при пересечении экватора переворачивались на спину и не могли из США в Японию пересечь линию дат :)
    • +5
      В F-22 просто отключились системы, а вот F-16 переворачивался при пересечении экватора.

      www.anekdot.ru/id/585131/
  • +1
  • +34
    А измеряли бы высоту в метрах — не достигли бы такого предела :)
    • +13
      Угу, 65535 метров хватит для всех! ;)
      • –1
        Через пару десятков лет и этого будет мало
        • +1
          Собственно, в этом и был смысл моего предыдущего комментария.
  • +1
    скорее всего, тут дело не только в ПО, а еще и в протоколе передачи данных — поле высоты всего 16 бит, вот и получили проблемы…
  • +10
    U-2. Все сходится!
    U = Unisgned int
    2 = 2bytes
    • 0
      Не совсем сходится :) Официальное название этой модели — U-2S
      • +1
        Unsigned
        2Bytes
        Short

        Так лучше будет =)
  • 0
    Стоимость проекта 2.1млрд $, но как ни странно, они умудрились допустить программную ошибку практически в самом начале…
    • +1
      Сто раз твердили — проверяй входные данные, но некоторые очень любят получать по лицу старыми граблями — видать лицо уже приняло форму ручки граблей. Можно ведь было сделать вывод сообщения об ошибке с требованием узнать у пилота — а на какой высоте он сейчас, или перевести работу в ручной режим, а не тупо интерпретировать неправильные значения.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.