Лучшие ошибки софта V

В какой-то мере это ошибка и софта, потому включаю: Intel в 90-х умудрилась выпустить в процессорах Pentium ошибку деления над числами с плавающей запятой. В историю вошло как Pentium FDIV bug и обошлось в результате в $475M — процессоры не пропатчить, пришлось отзывать. Как аукнулись репутационные риски — не подсчитать, но наверняка в AMD за происходящим следили с большим интересом. Характерно, что в Intel знали о проблеме, но как-то… не считали её важной для рынка. Подумаешь, ошибочка. Кто будет страдать, тому камушек и заменим. Но малой кровью обойтись не получилось.

27 марта 2008 года в Хитроу открывали терминал №5. Тут же (хорошо, не прям вот тут же, успели отменить 34 рейса, но) закрыли, потеряв £16M, багаж, пассажиров и нервных клеток без счёта. Сложно тут выделить одну ошибку. Официальные лица говорят, что не успели дотестировать, выкатили всё в сжатые сроки, жизнь отличается от тестирования и т.д. Вроде бы и да. Но кейс «вручную убрать зарегистрированный багаж из системы» можно было и до релиза проверить, а не обнаружить, что он завешивает всё. Надо сказать, битый воробей лучше двух небитых ворон — с 2012 года терминал уже пять раз получил Skytrax World Airport Awards как лучший терминал в мире.

Самую забавную ошибку допустил Роберт Моррис в 1988 году. Вы Роберт. Вы написали вирус, который должен атаковать только VAX-компьютеры, а также с разумной периодичностью решать, плодиться ему или нет. Запускаете. Для подсчёта разумной периодичности слишком маленькое число, для VAX слишком портируемый код. Потому под ударом оказались 6K+ узлов тогда ещё ARPANET (энто как сейчас половину интернета заразить), ущерб на $100M, суд, условные 3 года, штраф на $10K, 400 часов общественных работ. А также попадание в историю. Кстати, Роберт не приуныл. Далее это соавтор будущего Yahoo! Store, соучредитель Y Combinator и вообще профессор в MIT.

В начале января 2010 года банковскую систему Австралии поразил неприятный баг (который в СМИ описывался как «вот то, что могло быть в 2000!») — условная «система» решила, что наступил 2016 год и потому миллионы кредитных карточек просрочены. В основном страдал Bank of Queensland, но задело и остальных. Ущерб не подсчитать. И вот тут меня накрыло дежавю. Полистал архивы. Точно. В начале 2010 года с миллионами карточек влетели и немцы. Плохой, плохой год.

Каждый опытный программист знает, что плохо написанные сервера надо часто ребутать. В какой-то момент этот опыт переняли и эксплуататоры Боинга 787. Смешно (немножко страшно тоже, впрочем), но его надо было ребутать раз в 248 дней, т.к. [по догадкам] система контроля содержала integer overflow (248 дней в секундах не помещаются в int). Вы этого не знали, потому не боялись. А теперь можно подумать ещё и о том, как такие баги проходят через жесточайшие этапы тестирования в Боинге.

Внеплановым шестым абзацем списка опишу не багу. Наверняка банальный человеческий фактор, но любопытен тем, как ошибки всё более глобализуются и входят в быт. В 2015 году в IT-департаменте Starbucks кто-то удалил одну таблицу. После чего бариста в кофейнях США и Канады три часа не могли воспользоваться терминалами. Напитки при этом отпускали (ура пятнице!). Сторонняя оценка утверждает, что потери составили несколько миллионов долларов. Можно также ещё подумать об ответственности разработчиков и админов — любой твой шаг аукнется на всю планету, а пользователь тут же ощутит это, находясь на другом континенте.

Лучшие ошибки софта V: Один комментарий

  1. >248 дней в секундах не помещаются в int
    В какой это int? )
    86400*248 = 21427200 = 0x146F400

    Но вообще что-то похожее на правду тут есть, в том плане что пороговое число для знакового переполнения 32битного инта похожее: 2^31 = 2147483648

    То есть 248+ дней в сотых долях секунды не помещается в 32битный знаковый int. Сорри за занудство.

Добавить комментарий