багги в реальной жизни
Десятка самых страшных багов за всю историю человечества
Если баги в программном обеспечении приводят к зависанию компьютера, то это ерунда. Гораздо хуже, если из-за ошибок в ПО ломаются автомобили, взрываются ракеты и погибают люди.
Самая первый компьютерный баг в истории был обнаружен в 1945 г., когда инженеры нашли в корпусе компьютера Harvard Mark II мотылька. Этот мотылек закорачивал контакты — и компьютер сбоил. Инженеры сделали запись в журнале событий «Первый случай обнаружения бага» (по-английски «bug» означает «насекомое»). С тех пор компьютерные сбои принято называть багами.
По мере распространения цифровых устройств баги все глубже проникают в нашу жизнь. Они окружают нас повсюду — на мобильных телефонах, в бытовой технике, в автомобилях. К счастью, обычно баги не приносят никакого вреда, кроме морального. Но бывает и по-другому, когда баг вызывает огромные финансовые потери и даже забирает человеческие жизни. Журнал Wired посвятил этой проблеме целую тему номера и опубликовал список 10 худших багов в истории человечества, в хронологическом порядке.
28 июля 1962 г. Космический аппарат Mariner I стартовал по направлению к Венере. Из-за поломки антенны корабль потерял связь с земными службами управлениями и перешел на собственную систему пилотирования. Но эта система содержала обидный маленький баг. В результате аппарат полетел совсем не в ту сторону и его пришлось подорвать над Атлантическим океаном. Последующее расследование установило, что в процессе программирования системы навигации была совершена маленькая опечатка — при вводе одной из формул был пропущен один символ.
1988 г. Переполнение буфера в Berkeley Unix. Первый в мире компьютерный червь (так называемый червь Морриса) заразил от 2.000 до 6.000 компьютеров менее чем за сутки, эксплуатируя уязвимость в реализации функции gets(). В ОС Berkeley Unix эта функция ввода/вывода не имела ограничения на максимальную длину.
15 января 1990 г. Падение телефонной сети AT&T. Ошибка в новой версии прошивки междугородних коммутаторов привела к тому, что коммутатор перезагружался, если получал специфический сигнал от соседнего коммутатора. Но беда в том, что этот сигнал генерировался в тот момент, когда коммутатор восстанавливал свою работу после сбоя. В один прекрасный день, когда какой-то коммутатор в Нью-Йорке перезагрузился, он подал тот самый злополучный сигнал — и началось. Вскоре 114 соседних коммутаторов непрерывно перезагружались каждые 6 секунд, а 60 тыс. человек остались без междугородней связи на 9 часов, пока инженеры не установили на коммутаторы предыдущую версию прошивки.
Все эти примеры, а особенно последний, еще раз показывают, что никогда нельзя в полной мере доверять компьютерам. Ведь программы для компьютеров создают люди, а людям свойственно ошибаться.
Баги в Матрице. Пользователи Интернета делятся странными историями о том, как у них однажды «заглючи
Так вот, если на секундочку все же предположить, что коварная виртуальная симуляция все-таки существует, то писал ее явно какой-нибудь небритый программист Вася с похмелья, ведь на фоне количества всевозможных багов и лагов в нашей с вами реальности однозначно меркнет даже та самая «Fallout: New Vegas».
Итак, сегодня мы решили подкинуть нашим дорогим читателям немного пищи для размышлений и собрали для вас четверку довольно странных и безумных историй от пользователей Reddit, которые повествуют о том, как в один прекрасный день их реальность полноценно заглючила.
Когда твоя девушка не знает, кто ты такой
«Меня зовут Джим, и пару лет назад я встречался с девушкой по имени Сара. Я обычно возвращался с работы домой по ночам, и у меня было и есть золотое правило: никогда не разговаривать по мобильнику за рулем».
«Одним вечером Сара начала названивать мне, когда я как раз ехал в машине, поэтому я сбросил звонок, а, притормозив на светофоре, написал ей СМС с обещанием перезвонить, когда буду на месте. И обещание свое я сдержал. Как только я заехал в гараж, то сразу же набрал знакомый номер. Трубку долго никто не снимал, и где-то через шесть-семь гудков мне ответил сонный и раздраженный женский голос».
«На мое приветствие и вопрос о том, чего она хотела от меня пару часами ранее, девушка на проводе заявила, что ее действительно зовут Сара, но никакого Джима они не знает, ее жених Джейсон сейчас спит рядом с ней, и, если я не перестану названивать ей в двенадцать ночи, он найдет меня и разобьет мне рожу. Я несколько раз перепроверил номер, даже попытался позвонить еще раз, но никто не отвечал, а на утро моя девушка закатила мне скандал из-за того, что я так и не позвонил ей накануне. Через пару месяцев мы расстались, и сейчас она успешно выскочила замуж за парня по имени Джейсон. Совпадение?»
Привет из будущего
«Моя жена часто рассказывает мне, что происходит в жизни у ее родителей. У нее была одна любимая история о том, как ее отцу (она из еврейской семьи) некий высокопоставленный друг подарил какую-то очень редкую и очень дорогую религиозную книгу. Она упоминала об этом при каждой возможности, и это хвастовство уже даже начало меня немного раздражать».
Сухая вода
«Я выматерился и пошел на кухню за какой-нибудь тряпкой. Когда я вернулся в спальню, у меня был шок! Хотя на полу так и осталась внушительных размеров лужа, рядом валялась пустая бутылка из-под воды, а моя футболка была мокрая, хоть выжимай, чертовая кровать была сухая, как трусы моей бывшей в пустыне Сахара!».
Поворот не туда
«В силу природного топографического кретинизма я всегда езжу с GPS-навигатором, особенно по ночам. Когда я один раз ехал по трассе, голос из навигатора сказал повернуть налево через 200 метров. Я уже несколько раз бывал в этой местности и не помнил, чтобы здесь хоть когда-нибудь был поворот, но навигатору виднее».
«Я свернул. Дорога была совершенно пустая, никаких машин кроме меня не было. Через каждые полтора метра стояли фонари, и я отчетливо видел новое дорожное полотно со свежей белой разметкой. Тут я внезапно взглянул на экран навигатора и испугался. Если верить карте, я сейчас ехал через глухой лес без всяких шоссе».
«Я проехал еще метров триста, но нигде не увидел съезда с дороги. В итоге я плюнул на все правила ПДД, развернулся в совершенно неположенном месте и на всех газах рванул обратно, откуда приехал. Сколько там потом ездил, этого поворота больше не замечал. Как в «Сумеречной зоне» побывал, честное слово!».
Если вам понравился пост, пожалуйста, поделитесь ими со своими друзьями! 🙂
Поиск багов как образ жизни
Введение
В повседневной жизни мы уже чаще пользуемся сайтами и мобильными приложениями, чем прикладными программами для компьютера. В этой сфере проектов с открытым исходным кодом очень мало. Большинство проектов – продукты крупных компаний, имеющих несколько линий поддержки. Сообщить о баге через первую линию поддержки — практически бесполезное занятие. Особенно остро проблема стоит с банковскими приложениями. А сайты? Владельцы сайтов часто вообще не имеют команды разработки. А если через сайт предоставляется какая-нибудь услуга, то общение с менеджерами этих сервисов проходит ещё хуже, чем с первой линией поддержки. Самые интересные истории будут ниже. Надеюсь, они помогут компаниям обратить внимание на качество своих программных продуктов.
Баги на сайтах
Телеканал 2×2
Пожалуй, 2×2 — единственный телеканал, который я смотрю. Никакого телевидения у меня не подключено, и я был очень рад, когда на сайте появился прямой эфир. Имея в наличии телевизор с доступом в Интернет, это было идеальным решением для меня – смотреть телеканал онлайн. Но на деле оказалось всё намного сложнее.
Прямой эфир через браузер на телевизоре не работал. Т.к. сообщать о багах разработчикам – часть моей трудовой деятельности, я быстро нашёл контакты на официальном сайте и попытался сообщить о проблеме. Почему попытался? За 2 месяца не удалось получить никаких ответов с двух почтовых адресов. И в группе ВК ничего дельного не ответили (маркетологу, раскручивающему группу в соц. сетях, явно было не до меня с неработающим сайтом).
Но я не отчаялся. Проблема была явно в трансляции и мне удалось её отследить. Она шла с серверов Rutube. Около месяца ушло на попытки связаться с их специалистами. Самое удачное общение произошло с администратором группы Rutube в VK. Мне дали контакты системного администратора. На письмо ему оперативно ответил его коллега, и мы договорились провести подключение, чтобы записать логи. Оказалось, сервер не был настроен для такого подключаемого клиента (телевизор с Tizen). На решение проблемы ушло 2 часа. Спасибо Алексею Лебедеву из Rutube и админу группы в ВК, которые единственные ответственно отнеслись к своей работе во всей этой цепочке «контактов».
Ресторан MaMa Mia
На сайте MaMa Mia нельзя оплатить заказ Online. По крайней мере, это не получилось у меня. А причина, как потом выяснилось, низкое качество кода. Но давайте по порядку.
Когда корзина полностью была сформирована, кнопка «Оформить заказ» не подавала никаких признаков жизни. А потом в почте я обнаружил это:
Каждый клик по «неработающей» кнопке формировал новый заказ. Как видите, я не отказал себе в удовольствии хорошенько протестировать этот баг 😀
На сайте отсутствует форма обратной связи и какие-либо другие контакты, кроме телефона. Там, конечно же, отвечают менеджеры, далёкие от подобных проблем. С группой ВК этого ресторана такая же ситуация. Более-менее релевантные проблеме контакты мне получить не удалось.
На самом деле, это серьёзная проблема для бизнеса, когда некоторые недоработки, особенно с финансами (я ведь хотел оплатить заказ, но не смог), остаются незаметными для руководства. Более того, даже мы сами недавно умудрились попасть в подобную ситуацию, когда на пять дней сломалась форма запроса триального ключа. Мы очень сожалеем о потерянных пользователях 🙁 А в ресторане, видимо, нет.
Не получив никакой отдачи от общения с менеджерами, я открыл консоль браузера и начал смотреть (кстати, в web-разработке я практически не разбираюсь):
Да это же неперехваченное исключение! Какая красота. Вот тут-то точно статический анализатор мог бы помочь.
С помощью пары запросов поисковику удалось выяснить, что это счётчик для Яндекс.Метрики. Интерпретация страницы просто прекращается после отказа любого внешнего компонента. Как говорится, на разработку было выделено много рублей… Так почему же кидается исключение? В моём браузере было установлено расширение Kaspersky Protect. Отключение разного рода маячков и счётчиков, видимо, входит в защиту от отслеживания, включенного по умолчанию. Это было причиной проблемы. Заказ еды я потом сделал на другом, более технически продвинутом сайте.
К сожалению, эта проблема довольно распространена. Только после этого случая я понял непонятное поведение и других сайтов, которые мне встречались. Надеюсь, у web-разработчиков, попавших на эту статью, опыта прибавится.
ЛК Ростелеком
Наверное, у каждого россиянина найдётся история «интересного» общения с представителями Ростелекома. Но моя будет про небольшой баг. В поддержке ответили, что так не считают, но программисты прикол поймут.
Скриншот из моего личного кабинета:
В базе данных хранится значение NULL, представители Ростелекома считают нормальным выводить это значение на экран. По-моему, это совсем ненормально. Возможно, я просто мыслю как C++ программист, и меня настораживает это значение 😀
Мобильные приложения
РЖД Пассажирам
В мобильном приложении РЖД встретилась интересная ошибка.
Скрин из мобильного приложения:
Параграфы документации хранились в массиве и выводились на экран в обратном порядке. Разработчик что-то напутал с сортировкой или счётчиками циклов в коде. В последней версии приложения этот баг исправлен.
ВТБ-Онлайн
Это был прекрасный банк с удобным приложением. Но летом 2019 года, видимо, в команду пришёл «эффективный» менеджер, и приложение испортилось. Самым большим преимуществом для меня была удобная и быстрая поддержка. Но летом 2019 года начались эксперименты с ботом в чате поддержки. Этот бот был очень сильно забагован. Как минимум на протяжении 3-х месяцев в чате поддержки был жёсткий рассинхрон. На сообщения никто не отвечал, чат пустовал, а после перезагрузки приложения выяснялось, что чат наполнен сообщениями бота, но они выводились только после перезагрузи. Но тогда сеанс уже закрывался, и со следующим сообщением повторялся тот же самый баг. По электронной почте поддержка ВТБ всегда быстро реагировала, но ничего не делала по существу.
Последней каплей для меня стал ещё один баг в чате поддержки, который до сих пор не исправлен:
Приложение тупо не загружает скриншоты с телефона, на котором работает приложение. Это Epic Fail. Я отказался от карт банка и свёл оставшиеся активности в банке к минимуму.
Сбербанк Онлайн
Возможно, самый забагованный банк в России. Среднее время исправления подтверждённого бага по моей многолетней практике – 1 год.
Вот самый вопиющий, на мой взгляд, случай.
При передаче показаний приборов учёта для оплаты жилищно-коммунальных услуг (далее ЖКУ) вас ждёт неприятный сюрприз:
Поясню дополнительно: показания ПУ принимаются с точкой, а для ввода на клавиатуре есть только символ «запятая».
Этот баг откровенно мешал пользоваться приложением, и я часто обращался в поддержку за его исправлением. С момента обнаружения баг просуществовал 6 месяцев (февраль-июнь). После чего, в июльском обновлении, его исправили, включив стандартную клавиатуру. Но это не конец истории! В следующем же месяце (август) в очередном обновлении приложения вернули клавиатуру без нужного символа! Я не знаю, что могло произойти в команде разработки, что пришлось делать такой откат изменений, но банком я пользоваться перестал. Это был один из многочисленных багов, и они практически не исправляются.
Связь с поиском ошибок в коде
Появление описанных проблем и ошибок имеет определённые причины. Это недочёты в процессе разработки программ, а также в организации работы сотрудников в целом. От написания кода до доставки приложения пользователю проходит несколько этапов.
Выявленные проблемы – это, в первую очередь, допущение отделов тестирования. В крупных компаниях это обычно большие команды, занимающиеся только тестированием. Но их эффективность может страдать от разных факторов.
Один из важных факторов, ухудшающий работу тестировщиков, – ошибки, которые можно было исправить ещё на этапе написания кода. Обработка найденных багов отнимает время нескольких людей. Но некоторые из них могли бы и не дойти до тестировщиков, что, в свою очередь, сэкономило время тестировщиков. Они бы потратили его на более продуктивное и высокоуровневое тестирование.
Так, наша команда разработчиков анализатора кода PVS-Studio продвигает методологию статического анализа. Это этап разработки программного обеспечения, который стоит перед передачей приложения в отдел тестирования. По нашему опыту, большинство ошибок являются недочётами этапа разработки. И их можно исправить на раннем этапе, сэкономив время и деньги.
К сожалению, в отличие от программ с открытым исходным кодом, тут у меня нет возможности самостоятельно проверить код на наличие ошибок. Но если код написан на C, C++, C# или Java, то этим командам было бы полезно зайти на сайт и прогнать анализатор на своём коде. Для программ с открытым исходным кодом делается очень большой вклад этим инструментом.
Заключение
Замечать баги в используемом программном обеспечении я уже не перестану. Наверное, это не самое страшное, что могло произойти. У меня есть знакомые, которые работают в кинематографе (мультипликация). Так вот они замечают баги при просмотре мультиков, и это доставляет неудобство. По-моему, это даже хуже. Программы хотя бы можно доработать, в отличие от отснятого материала.
Как вы заметили, с поддержкой пользователей совсем всё плохо. Причём это характерно именно для крупных компаний. Им практически невозможно что-то сообщить и поделиться своим опытом. Некоторого успеха я достиг при посещении конференций для разработчиков. Там часто и присутствуют крупные компании, и некоторые вопросы реально можно обсудить и решить.
Если вам понравится новый формат обзоров багов и историй с ними, то я продолжу в том же духе.
Баги реальной жизни.
Последний месяц пользуюсь одним.
По долгу службы езжу каждый день через Лобню на 21 автобусе от станции до Шереметьево.
Утром там обычно стоит толпа народу и автобус, что называется, битком, естественно у кондуктора все каналы связи перегружены.
Если зайти первым, сесть у окна, вложить в правую/левую (смотря с какой стороны сядете) руку купюру так, чтобы из сжатой руки торчал лишь белый край ребра и прикинуться спящим, то весьма велика вероятность что кондукторша подумает что это билет и не будет вас тревожить. А если и потревожит: «А. что. где я. Ах да, простите, за проезд? Вот держите.»
Багует где то 50/50.
Мелочь конечно, а приятно.
Дубликаты не найдены
Именно так я однажды в забитом (на момент входа) трамвае проехал, тоже с зажатой в руке купюре и видом, что всё нормально.
Особенности жизни в Самаре. История первая
Вчера еду в трамвае. Обожаю трамваи!
Кондуктор берет у старушечки социальный проездной (по нему положены 90 бесплатных поездок), пробивает билет и говорит:
— Что ж это вы так мало ездили в этом месяце? У вас еще полно поездок осталось!
Бабуля хлопает глазами и не сразу находит, что сказать. Но улыбается.
P.S. Добрых и веселых историй будет много. Оставайтесь со мной!)
Найден ещё один баг в Cyberpunk 2077
Со своей лавкой в чужой автобус не суйся
Суровый кондуктор
Школьницы из города Каменск-уральский устроили погром в автобусе и сбежали через окно
Школьницы против автобуса.
Каменск-Уральский. 19 октября 2020г.
На кадрах видно, как школьницы бьют ногами по дверям стоящий на остановке общественного транспорта автобус и пытаются выйти, после чего одна из них вылезает в окно.
Также, по словам очевидцев, перед тем, как начать бить дверь автобуса, подростки повздорили с кондуктором.
Кондуктор сделала девушкам замечание, но в ответ услышала угрозы и оскорбления.
— Как позже выяснил приехавший патруль полиции, им по 17 лет. Две буйные вылезли в окно и убежали на следующей остановке, а одна осталась, ее и посадили в патрульную машину.
Комментариев из полиции по этому инциденту не поступало.
masterok
Мастерок.жж.рф
Хочу все знать
Мы как то обсуждали Политический код ошибки HTTP, а теперь перейдем к банальным БАГам.
Согласно Википедии, в программировании баг (англ. bug — первичные значения: клоп, любое насекомое, вирус) — жаргонное слово, обычно обозначающее ошибку в программе или системе, из-за которой программа выдает неожиданное поведение и, как следствие, результат.
Первое применение слова bug по отношению к технике приписывают Томасу Эдисону. По одной из легенд, еще во время работы над фонографом, он долго не мог понять, почему же собранный прототип отказывается работать. Перебрав в уме все возможные варианты и так и не найдя решения, он предположил, что во время сборки между деталями устройства мог попасть жук. И хотя на самом деле никаких насекомых в фонографе не оказалось, в будущем он продолжил использовать слово bug для обозначения досадных неисправностей.
В качестве примера можно привести одну из записей из его рабочего дневника, датированную 1878 годом:
«Так было со всеми моими изобретениями. Первый шаг — интуиция, которая приходит как вспышка, затем возникают трудности — устройство отказывается работать, и именно тогда проявляются «жучки» — как называют эти мелкие ошибки и трудности — и требуются месяцы пристального наблюдения, исследований и усилий, прежде чем дело дойдёт до коммерческого успеха или неудачи»
Любопытно, что слово debugging, которое в наши одни обозначает этап отладки программы и поиск всех возможных проблем, встречалось еще в Оксфордском словаре 1945 года выпуска. Правда, тогда речь шла не о программах, а об авиационных двигателях.
Применимо к компьютерам и программному обеспечению слова «баг» и «дебагинг» стали использовать несколько позже. Считается, что родоначальником этой традиции в 1946 году стала контр-адмирал флота США Грейс Хоппер, которая столкнулась с неполадкой в работе с вычислительной машиной Harvard Mark II. Как выяснилось впоследствии, причиной странного поведения ЭВМ оказался самый обычный мотылек, который попал между контактами одного из электромеханических реле. Трупик несчастного насекомого был бережно извлечен из недр машины и приклеен скотчем к странице рабочего дневника. Подпись ниже гласила: «Первый реальный случай обнаружения бага».
В наш с вами век реальные насекомые уже вряд ли смогут привести к сбою в работе программы. Зато вот их цифровые сородичи ежегодно доставляют людям кучу проблем. Случаев, когда одна крохотная ошибка программиста приводила к огромным неприятностям, в новейшей истории полно и случай в iPhone – еще цветочки.
Временные сложности
Сломать за 60 секунд
На днях владельцы техники Apple случайно выяснили, что если установить на iPhone или iPad дату 1 января 1970 года, а затем перезагрузить устройство, то оно превратится в «кирпич». На экране будет вечно светиться логотип Apple и больше загрузиться устройство не сможет уже никогда. Ну или как минимум – до вашего визита в сервисный центр, хотя и с этим пунктом пока не все ясно.
На данный момент установлено, что ошибка встречается на мобильных устройствах Apple с 64-битными процессорами Apple A7, A8, A8X, A9 и A9X. Версия ОС значения не имеет. Категорически не рекомендую проводить подобные эксперименты на своем аппарате – это гарантированно приведет к серьезной поломке, справиться с которой своими силами вы не сможете. Так же хочу обратить ваше внимание на всевозможные «приколы», уже второй день гуляющие по интернету. Шутники предлагают поменять время на смартфоне чтобы увидеть секретную пасхалку или суметь бесплатно скачать платные программы из AppStore. Результат – «кирпич» вместо смартфона.
Суть бага. В Unix-подобных ОС время считается не совсем привычным для нас образом. Для Unix текущее время – это число секунд, прошедшее от точки отсчета, за которую была принята полночь 1 января 1970 года. Для человека такой способ не очень удобен, а вот для компьютера — в самый раз. Что именно происходит в «голове» у iPhone, который решил, что присутствует при зарождении Unix вселенной, пока не известно, но что сказывается это на нем не лучшим образом – уже неоднократно проверенный факт.
Впрочем, попытаться самим предположить, где именно закрался «баг», нам никто не мешает.
Те, кто играл в игры времен MS-DOS наверняка сталкивались с разными багами, возникающими при переполнении счетчика. К примеру, в Civilization был очень миролюбивый правитель по имени Ганди, у которого параметр агрессии был равен 1. Если его еще немного «задобрить», предложив принять какой-то подарок или заключив союз, значение агрессии вначале падало до нуля… а затем резко взлетало до небес. Дело в том, что переменная предполагала значения от 0 до от 255 и при попытке отнять единицу от нуля вновь становилась максимальной. Программисты просто не предусмотрели проверку текущего значения переменной, что и приводило к ошибке.
Подобная ситуация встречалась и во многих других играх. К примеру, в оригинальной X-Com максимально прокачанный боец рисковал внезапно стать беспомощным младенцем, так как с очередной прибавкой к характеристикам значения счетчиков скидывались до нуля.
Можно предположить, что что-то подобное происходит и с iPhone — во время загрузки iOS для каких-то своих целей требуется взять значение времени, которое на пару секунд меньше текущего… а так как дата 1 января 1970 года и так принята системой за 0, то в результате значение 64-битной переменной становится максимальным. Ради интереса можно попробовать посчитать, какая это получается дата, но очень подозреваю, что наше Солнце к тому времени уже точно погаснет.
Уверен, что рано или поздно с этой проблемой Apple разберется. Но вот 19 января 2038 года я бы все же посоветовал всем быть поосторожнее – именно в этот момент значение Unix-времени превысит 2147483647 и перестанет помещаться в стандартную переменную (беззнаковое 32-битное целое число). И как на это отреагируют 32-битные устройства по всему миру — загадка.
Баг Тысячелетия
Суть бага. Во многих ОС год записывался только двумя последними цифрами. Так, для обозначения 1998 года использовались цифры 98, для 1999 – 99 и так далее. По этой системе 2000 год обозначался как 00, что для компьютера ничем не отличалось от 1900 года.
Несмотря на свое страшное название, на практике ни к каким особым проблемам этот баг не привел. Может быть, за это стоит благодарить оперативно сработавших программистов, которые к 2000 году смогли исправить большую часть ПО. А возможно, что это просто у страха глаза были велики. В любом случае, по-настоящему опасные баги выглядят совершенно иначе и крайне редко предупреждают о своем существовании за несколько лет до возникновения потенциальной проблемы.
Через тернии к звездам
Самый дорого дефис в истории
Маринер-1 – космический аппарат NASA, который был создан для изучения Венеры. Запуск аппарата состоялся 22 июля 1962 года, однако уже через несколько минут после старта он был уничтожен.
Первые проблемы начались уже спустя 293 секунды после запуска, именно в этот момент Маринер-1 потерял связь с Землей. Такая ситуация была изначально предусмотрена инженерами, и управление аппаратом принял на себя бортовой компьютер. Вот только компьютер тут же «запаниковал» и выдал команду на очень сильную коррекцию курса, которая в тот момент была совершенно не нужна и вывела Маринер-1 на опасную траекторию. Так как падение ракеты к тому моменту было уже практически неминуемо, специалисты NASA приняли решение ее уничтожить.
Суть бага. Во время перевода написанных от руки формул в код программы, программист пропустил символ надчеркивания (макрон). Отсутствие в коде одной единственной черточки привело к тому, что бортовой компьютер стал воспринимать незначительное отклонение от траектории движения как очень серьезное и срочно ввел значительные поправки, которые и сбили ракету с курса.
Впрочем, в некоторых версиях произошедшего вместо символа надчеркивания фигурирует дефис, а кто-то предполагает, что во время составления программы на Фортране программист просто перепутал точку с запятой.
Метод копипаста
«Ариан 5» (фр. Ariane 5) — европейская ракета-носитель семейства Ариан, предназначена для выведения полезной нагрузки на низкую опорную или геопереходную орбиту. Она до сих пор является основной ракетой-носителем ЕКА и останется таковой минимум до 2023 года. И тем не менее, ее первый запуск закончился аварией, которая стала примером одного из самых дорогих багов в истории.
Суть бага. Во время работы над ПО новой ракеты программисты использовали куски уже готового кода, ранее написанного ими для Ариан 4. В результате, иные технические характеристики новой ракеты и немного другая расчетная траектория полета привели к тому, что ее текущая скорость превысила имеющиеся в программе ограничения. В какой-то момент бортовой компьютер просто не смог перевести значение скорости из 64-битного формата в 16-битный (число оказалось больше 32,767 и просто «не влезло» в переменную), что и вызвало сбой в работе ПО.
Цена ошибки
Защита от дурака
В сентябре 1997 года авианосец США USS Yorktown в течение трех часов дрейфовал в море с неработоспособными бортовыми компьютерами и системой управления ходовой частью. К счастью для экипажа, ситуация произошла во время учебных маневров, а не боевых действий.
Суть бага. На ноль делить нельзя – это знают даже ученики начальной школы. Но компьютер – не человек, и, если попросить его поделить какое-то число на ноль, он честно попытается это сделать. Причем, этой неразрешимой задаче он станет уделять все свое время и внимание. Если, конечно, программист не предусмотрит специальную «защиту от дурака», которой в бортовых системах USS Yorktown почему-то не было. В результате, когда один из членов экипажа по ошибке ввел ноль в бортовую систему управления, она вышла из строя, на несколько часов оставив авианосец совершенно беспомощным.
Одна треть секунды
К сожалению, далеко не все «баги» в ПО оканчиваются столь удачно. Очень часто они могут привести к человеческим жертвам, что и произошло в 1991 году во время войны в Персидском заливе. Из-за ошибки в ПО зенитный ракетный комплекс Patriot отказался перехватывать запущенную ракету, что привело к человеческим жертвам.
Суть бага. Из-за особенностей округления времени, каждые 100 часов бесперебойной работы ЗРК Patriot его часы сбивались примерно на треть секунды. В итоге компьютер вовремя обнаружил запуск вражеской ракеты, но из-за бага со временем допустил критическую ошибку при просчете траектории. Решив, что ракеты уже не существует, система отменила попытку перехвата.
Цепная реакция
Компьютерный разум
Чёрный понедельник (англ. Black Monday) — понедельник 19 октября 1987 года — день, в который произошло самое большое падение индекса Доу-Джонса за всю его историю. Хотя еще утром абсолютно ничто не предвещало беды и никаких объективных причин для обвала рынка просто-напросто не было.
Суть бага. До сих пор есть несколько теорий произошедшего, но в большинстве случаев основной причиной называют примитивную логику ПО для программного трейдинга. В какой-то момент рынок начал падать, и самые осторожные «электронные помощники» трейдеров поспешили побыстрее избавиться от всех дешевеющих ценных бумаг. Это привело к тому, что вместо обычной коррекции случилась самая настоящая цепная реакция — рынок оказался перенасыщен, цены на бумаги упали еще больше и в дело включилось ПО остальных игроков. В итоге один крохотный снежок спровоцировал огромную горную лавину, которую никто совершенно не ожидал.
С точки зрения финансовых последствий, «черный понедельник» стал далеко не самым страшным событием прошлого века (хотя и затронул очень многие страны), однако многие финансисты и трейдеры до сих пор вспоминают о нем с содроганием. Это был первый случай, когда машины попросту оттеснили людей в сторону и стали играть друг с другом по своим собственным правилам. Люди же выступали в роли сторонних наблюдателей, слишком медленных и неповоротливых для того, чтобы их стоило принимать во внимание.
Эпидемия
Спустя несколько часов в мире игры разразилась страшная эпидемия, которая выкашивала целые города. Улицы были завалены трупами персонажей игроков, а выжившие в страхе шарахались от любой тени, боясь подцепить смертельную заразу. Как-то совладать с ситуацией удалось только после перезапуска игровых серверов, во время которого программисты в спешном порядке установили специальный патч, исправляющий ошибку. И думаю, что тот день многие игроки запомнили надолго.
Впрочем, сам я в World Of Warcraft никогда не играл и могу пересказать проишествие только с чужих слов. Возможно, кто-то из читателей меня поправит.
Суть бага. По задумке гейм-дизайнеров, эффект должен был действовать только в домашней локации Хаккара и никак не мог затронуть персонажей в других местах. Они не учли только один момент – зараженный игрок мог телепортироваться в другую локацию, заразив ничего не подозревающих соседей.