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

Введение

Каждый может совершить ошибку. Это нормальное явление в нашей жизни. И всё бы ничего, но есть ошибки, которые стали масштабными и навсегда оставили свой след в истории Интернета. Сегодня мы поговорим про такие ошибки, а точнее про баги, которые привели к самым разным последствиям.

Реальный баг

Помните историю самого первого бага? 9 сентября 1947 года кое-что любопытное нашли операторы компьютера Mark II. Это что-то — моль. История гласит, что легендарная Грейс Хоппер, известная как "Amazing Grace" и "Grandma COBOL", обнаружила насекомое между точками на реле N70 панели F.

Так вот, в 2023 году произошла ситуация, напоминающая эту.

Эксперты из TechTuber NorthWestRepair на своём канале поделились видео, как они пытаются найти причину, из-за которой не работает видеокарта NVIDIA RTX 4090 Founders Edition. Владелец видеокарты говорил, что она подаёт "признаки жизни", однако изображение на монитор не выводилось.

Ремонт видеокарты начался с проверки на короткие замыкания и измерения напряжения, затем была проверка под микроскопом на наличие дефектов. В результате проверка указала на неисправность работы графического процессора. Его решили снять и обнаружили там реальный "баг", а именно муху.

После очистки тестирование показало, что видеокарта стала работать нормально.

Копипаста, которая не дала полететь в космос

Это история про ошибку, стоимость которой можно оценить в семь миллиардов долларов и 10 лет работы. Ведь именно столько было потрачено на разработку ракеты Ariane 5.

Ракета Ariane 5 — европейская одноразовая ракета-носитель. Она предназначена для вывода на околоземную орбиту средних или тяжёлых космических аппаратов. В создании ракеты принимали участие около тысячи промышленных фирм. Всё шло хорошо, однако не прошло и 40 секунд после взлёта, как ракета взорвалась. Это произошло 4 июня 1996 года.

На высоте 4000 метров Ariane 5 отклонилась от прямой траектории и самоуничтожилась. 13 июня 1996 года специально созданная комиссия приступила к расследованию крушения, а уже 19 июля был обнародован её исчерпывающий доклад.

Если кратко, то ошибка была со стороны разработчиков. Они скопировали код из управляющей программы предыдущей модели ракеты, которая успешно взлетала больше сотни раз. Однако они не учли, что Ariane 4 летела по другой траектории и с другой горизонтальной скоростью.

Фрагмент кода ракеты с ошибкой.

Подробнее об этом кейсе вы можете почитать в заметке "Космическая ошибка: 370.000.000 $ за Integer overflow".

"Купертино с нашими итальянскими товарищами было очень плодотворным"

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

Если вы изучаете английский, то вам наверняка знакомо слово "cooperation" (сотрудничество). По правилам английского языка ещё один вариант написания этого слова выглядит так — "co-operation".

Однако во многих словарях ранних версий систем проверки орфографии, например Microsoft Word, варианта "cooperation" не было в списке правильных слов. И все бы ничего, если бы умная система предлагала заменить этот вариант на вариант с дефисом. Но, вы будете удивлены, она предлагала заменять на "Cupertino" — название города в Калифорнии.

Поэтому в архивах НАТО, ООН и других организаций сохранились много документов со словом "Купертино" вместо "сотрудничество".

Один из примеров: "Купертино с нашими итальянскими товарищами было очень плодотворным".

Чёрный понедельник

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

Промышленный индекс Доу Джонса — один из нескольких фондовых индексов, созданных редактором газеты Wall Street Journal и одним из основателей компании Dow Jones & Company. В него заложена стоимость акций 30 самых больших американских компаний, например, Apple, Coca-Cola и Intel.

Падения индекса начались ещё в начале октября 1987 года. Причины назывались разные: военная эскалация в зоне Персидского залива, печальное известие о здоровье Первой леди Нэнси Рейган, ужесточение налогового законодательства со стороны Западной Германии и Японии и др.

И вот чёрный понедельник произошёл 19 октября 1987 года.

Так выглядит чёрный понедельник инвестора. Скриншот: Ycharts

Это был самый крупный обвал, который затронул не только США, но и такие страны, как Австралия, Канада, Великобритания и др.

После этого дня в падении стали винить непосредственно разработчиков. Хотя эксперты ещё спорят о его истинных причинах.

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

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

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

Немного криминала

В уже далёком 2015 произошёл сбой, который досрочно освободил 3200 заключённых из тюрем Вашингтона, США. На самом же деле эта проблема с системой длилась с 2002 года.

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

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

Самый юный хакер в истории

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

Этот одарённый мальчик — Кристофер фон Хассель из Сан-Диего. Как же ему удалось взломать аккаунт своего отца Роберта? После неудачных попыток подбора паролей он просто несколько раз нажал на пробел, а затем на Enter. И, о чудо! У него получилось попасть в аккаунт отца.

Кристофер не сразу в этом сознался. Сам же Роберт работал в сфере информационной безопасности. Он восхитился открытием сына и отправил отчёт прямиком в Microsoft. Компания признала наличие уязвимости и исправила её.

Не дадим багам испортить проект!

Как мы видим из примеров выше, даже одна плохо написанная строчка кода может привести к печальным, а иногда и очень масштабным последствиям. Хотя иногда и реальные баги (например, мухи :)) тоже могут подпортить работу, благо это происходит редко.

Один из способов создавать более качественный и надёжный код — использование статических анализаторов, таких как PVS-Studio. Этот инструмент поддерживает анализ кода на языках C, C++, C# и Java.

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

Сообщество Вконтакте

Telegram-канал

Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Anastasiya Vorobeva. Bugs that buzzed a lot.

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


  1. unreal_undead2
    12.04.2024 07:43
    +7

    Однако во многих словарях ранних версий систем проверки орфографии, например Microsoft Word, варианта "cooperation" не было в списке правильных слов.

    Все же помнят что 97ой Word делал со словом "мультиканальный"?


    1. Anastasiia_Ogneva Автор
      12.04.2024 07:43
      +1

      поделитесь :)


      1. Deosis
        12.04.2024 07:43
        +2

        Самый очевидный вариант: предлагал исправить на версию без буквы к


      1. unreal_undead2
        12.04.2024 07:43
        +9

        Хинт - разбивал на два слова.


        1. denisg2
          12.04.2024 07:43
          +4

          При чем в не очевидном месте.


    1. pes_loxmaty
      12.04.2024 07:43
      +1

      Помню я инструкцию какую-то писал на первой работе, и мне ворд подчеркивал слово "дефектация"


      1. ailcat
        12.04.2024 07:43

        а потому что ворд был обучен правильному термину "дефектовка" (а что в народе его пишут не так, как требует ГОСТ - не знал).


    1. leshabirukov
      12.04.2024 07:43
      +4

      Еще "отмелькала".


    1. baldr
      12.04.2024 07:43
      +10

      Позволю себе привести расширенный список.

      Строго 18+ !

      "мультиканальный" -> "мультик анальный"
      "отмелькала" -> "отмель кала"
      "стриптизершей" -> "стриптиз ершей"
      "культурологии" -> "культ урологии"
      "походочка" -> "поход очка"
      "санитарочка" -> "санитар очка"
      "ельцинизма" -> "ель цинизма"
      "завязочками" -> "завяз очками"
      "задобреет" -> "зад обреет"
      "зарубежом" -> "заруб ежом"
      "колбасит" -> "кол басит" 
      "мухобойка" -> "мух обойка" 
      "документики" -> "доку ментики" 
      "спецназовцы" -> "спецназ овцы"
      "шестиканальный" -> "шестик анальный"
      "поющей" -> "пою щей"
      "Гаванькала" -> "гавань кала"
      "Islamabad" -> "Islam bad"
      "гаишный" -> "гашишный"
      "джедай" -> "доедай"
      "мобильник" -> "могильник"
      "неформальность" -> "ненормальность"
      "Сообщайте о глюках" -> "Сообщайте о злюках"
      "Движение за открытые исходники" -> "Движение за открытые исподники"
      "Майкрософт Ворд" -> "Майкрософт Вор"
      "В чате используйте ники" -> "В вате используйте нитки" (Word 2000)
      "Путешествуя по Интернету" -> "Путешествуя по интернату" (Word 7.0)
      "В Германии хорошие автобаны" -> "В Германии хорошие автобазы" (Word 7.0)
      "Верить в Христа" -> "Верить в юриста" (Word 7.0)
      "Говорить туфту" -> "Говорить туту" (Word 7.0)
      "Закупившись билетами" -> "Закурившись билетами"
      "Необходимо подтянуть тросики" -> "Необходимо подтянуть трусики"
      "Он был в дауне" -> "Он был в сауне" или "Он был в Дане"
      "Отечественные звезды блещут на эстраде" -> "Отечественные звезды блеют на эстраде" (Word 7.0)
      "Я люблю Иринку" -> "Я люблю ширинку"


  1. saipr
    12.04.2024 07:43

    А был еще баг в реализации российской криптографией, точнее в open-source реализации хэш-функции ГОСТ Р 34.11-2012.


  1. baldr
    12.04.2024 07:43

    Да ладно моль... Вот была история про то как крысу разорвало в хлам.


  1. zodchiy
    12.04.2024 07:43
    +6

    Мой любимый кейс - Fox Meyer Health Corporation, второй по величине оптовый дистрибьютор лекарств в США, разорился после внедрения SAP R/3 ERP, мало того, что новая система не смогла справится с объемами, так там была ошибка округления при расчетах, в виду того, что система обрабатывала около 400 тыс. транзакций в сутки, то эта ошибка привела к полному коллапсу в расчётах и в конце компания разорилась.



  1. Astus
    12.04.2024 07:43
    +2

    Приятное пятничное чтиво, спасибо.

    Самый юный хакер в истории

    Могли бы помимо упоминания в патчноуте, юному хакеру плюшек ещё каких отсыпать, хотя бы виртуальных. Поспешил с выводами - МС отблагодарили мальчика также годом gold-подписки, 4-мя играми и пятьюдесятью долларами.


    1. Anastasiia_Ogneva Автор
      12.04.2024 07:43

      Спасибо за положительный отзыв!


  1. OctoPocto
    12.04.2024 07:43

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