🐞 7 эпичнейших багов в истории человечества

NASA Mars Climate Orbiter — $193000000 убытков

В американских исследованиях Марса, после Global Surveyor-1996 и Polar Lander-1999 был запланирован третий зонд — Orbiter. 

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

Люди в NASA надеялись, что третий зонд в целом успешной серии, после прибытия в целевую точку будет исследовать историю климата Марса, а также искать следы воды на поверхности. После завершения миссии аппарат планировали использовать как коммуникационный передатчик для последующих миссий. После прохода на близком расстоянии от планеты, аппарат должен был восстановить радиоконтакт. Но в назначенное время на связь аппарат не вышел.

Расследование показало, что сбой случился из-за навигационной ошибки. Точнее, из-за того, что кто-то не учел разницу между английскими (и американскими) имперскими единицами измерения — и общепринятыми в остальном мире континентальными. Отправляемые команды были рассчитаны на формат единиц ускорения фунт в секунду, а должны были — ньютон в секунду. Ах, если бы управляющий код был кем-то добросовестно протестирован….

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

Mariner 1 — $18000000 убытков

Инцидент с Mariner 1, известный также как самый дорогой минус в истории, это второй эпический фэйл NASA. Кто-то забыл поставить символ “минус”, а кто-то не протестировал код как положено, и получили убытки на миллионы долларов.

На “Маринер” NASA возлагала большие надежды, и это были самые жаркие месяцы космической гонки. Торжественный запуск президент Кеннеди уже успел назвать историческим. Аппарат был запущен 22.06.1962 в 9 утра, однако на 5-й минуте полета резко поменял траекторию, затем начал падать и разрушился. 

Официальный отчет NASA гласил: “В начале полета ускорители работали в штатном режиме. Затем случилось непредвиденное отклонение от запланированной траектории, это зафиксировал сотрудник, отвечающий за точность траектории. Причиной отклонения оказалась ошибка в коде управления полетом. Это привело аппарат к резкому отклонению и угрозе падения в океан, в районе активного судоходства. Сотрудник, обнаруживший отклонение, дал команду самоликвидации аппарата.”

Через несколько дней в “Нью-Йорк Таймс” вышла статья, в которой NASA пыталась объяснить налогоплательщикам, почему дорогостоящий спутник потерпел крушение. Было сказано, что это случилось в результате ошибочного пропуска знака “-” в математических уравнениях в коде программы. Программист NASA пропустил нужный символ, во время пакетного ввода огромного количества информации в бортовую систему аппарата.

Еще через несколько дней Ричард Моррисон, пресc-офицер NASA, представлял причины катастрофы перед Конгрессом, где выражался более конкретно и подчеркнул важность маленькой ошибки. “Этот знак минуса фактически дал указание аппарату игнорировать поступающие данные, пока не восстановится связь со станцией управления. Если этого минуса нет, получается что в компьютер поступает ошибочная информация. В данном случае бортовой компьютер направил команду “резко влево, нос к земле”, в результате чего аппарат упал с разрушением”.

Крушение ракеты Ariane 5 — запуск 501 — $8000000 убытков

В 1996 году ракета-грузовик без экипажа, принадлежавшая Европейскому космическому агентству, запущенная на экваториальном космодроме Куру в Латинской Америке, взорвалась на 40-й секунде полета. Это был ее первый запуск. На разработку и доводку ракеты ушло 10 лет и многие миллионы долларов.

Причины прояснились через две недели. Причина взрыва: сбой в программе управления инерциальной системой ориентировки. Оказалось, что софт не обновляли от 4-й версии ракеты, а просто установили как есть на 5-ю. А ведь новая версия ракеты была оснащена намного более мощным двигателем, с которым старая система управления попросту не справилась.

Дальнейшее расследование уточнило причины. Оказалось, что дело не только в смене версий. В программе 64-битное число с плавающей точкой, описывающее горизонтальную скорость, конвертировалось в 16-битное целое число. Число оказалось больше чем допустимые 32767 (это самое большое допустимое значение для 16-битного целого числа, ты же помнишь?), и преобразование не было обработано корректно. Двигатель перешел в нештатный режим на 39-й секунде, ракета сразу же начала разрушаться “от неправильного баланса аэродинамических сил”.

Ошибка в процессоре Pentium — $475000000 убытков

Ошибка FDIV” в процессоре Pentium стала самым известным багом микропроцессоров Intel. Новое разрекламированное поколение процессоров заявлялось как быстрое и точное, однако стало печально известным как кишевшее багами. А самый крупный из них (и самый дорогой) — ошибка в таблице поиска в интелловском SRT-алгоритме (“алгоритм выбора кратчайшего времени”).

Руководство Intel поставило инженерам задачу: в новом процессоре ускорить вычисление скалярного кода с плавающей точкой в 3 раза, и векторного кода в 5 раз, по сравнению с древней серией 486DX. В Intel решили применить перспективный SRT-алгоритм, генерирующий по два коэффициентных бита на такт. Старый алгоритм сдвига с вычитанием в 486-й серии генерировал один коэффициентный бит на такт. SRT-алгоритм применяет таблицу поиска в вычислении промежуточных коэффициентов, связанных с делением чисел с плавающей точкой. Таблица поиска, изготовленная инженерами Intel, состояла из 1066 ячеек. Из них, “благодаря” ошибке программиста, 5 ячеек некорректно передавались в логическую матрицу (PLA). Если любая из этих бракованных 5 ячеек запрашивалась из модуля вычислений с плавающей точкой (FPU), она выдавала значение “0” вместо положенного “+2”. Это искажало вычисления в модуле и иногда приводило к заметно менее точному результату (ошибка в четвертом разряде после точки), причем из-за “рекурсивной” природы SRT-алгоритма такие ошибки “накапливались”. 

В основном, точность вычислений “пентиума” страдала лишь в 9 или 10 разряде после точки. Впрочем, покупатели и клиенты не очень-то слушали эти оправдания, и бодро подавали в суд. Как поодиночке, так и коллективные иски, плюс корпоративные — что и сформировало впечатляющую сумму убытков Intel.

Червяк Моррис — $100000000 убытков

Оказывается, так бывает. Не только в плохом кино. Студент-программист, пытающийся решить свою учебную задачу, случайно создает червя, приносящего убытков на 100 миллионов долларов (учитывая выплаченные компенсации и неустойки — как и в остальных случаях выше и ниже).

Это случилось в далеком 1988 году. Роберт Моррис, студент последнего курса Корнуэльского университета, судя по всему, случайно создал опаснейший зловред. (Детальнее об этом сюжете можно почитать на сайте Университета Юты). Он выполнял “невинный эксперимент”, и сделал, как он уверял жюри под присягой, случайную ошибку в коде. Червь вырвался на свободу и заразил тысячи компьютеров. Которые на то время в Америке уже стали вполне обычным рабочим инструментом в офисах.

Роберта обвинили в хакерстве, злых намерениях, и для начала оштрафовали на 10 тысяч долларов. Позже сумма причиненных убытков (всем потерпевшим) — достигла 100 миллионов. Компаниям пришлось восполнять недополученную прибыль, простои и т.п. Разумеется, такую сумму Роберт восполнить не мог, ему оставалось только сесть в тюрьму пожизненно.

Адвокат Роберта рьяно доказывал, что не все так плохо, что червь “помог усовершенствовать системы безопасности”, создать такую полезнейшую вещь как антивирусы. А также ознакомил публику (и Голливуд) и коммерческие компании с такой опасной вещью как компьютерные вирусы (о которых компании, следовало полагать, до тех пор не знали). Как-то выпутавшись из проблем — суд ему, в целом, поверил (!), что это был случайный непроверенный баг, Роберт взялся за ум, стал бизнесменом, основал фирму “Y Combinator”. Сейчас он профессор в самом уважаемом американском технологическом вузе — Массачусетском МИТ. Изъятая судом как вещественное доказательство 3,5-дюймовая дискета с исходниками червя находится в Музее Бостонского университета. 

Банкротство спекулянтов из Knight — 440 миллионов долларов

Что будет, если самая хайповая из компаний-спекулянтов на американском фондовом рынке будет некорректно работать с акциями. Например, покупать слишком дорого, продавать слишком дешево? Оч плохая идея, впереди банкротство? Именно так и случилось. 

В разгар летних отпусков, 1 августа 2012, случилось нечто. Кошмар для СЕО любой компании. То, что строилось 17 лет, рухнуло за пару часов. Новый трейдинговый софт компании Knight содержал баг, который автоматически активировался, когда Нью-Йоркская биржа открылась утром. Некорректный софт заставил компанию (даже без уведомления) перейти в режим автоматической покупки акций. Пока руководство пыталось понять что происходит, оказалось, что куплены акции 150 компаний, на сумму 7 миллиардов долларов — и это лишь за первый час такого трейдинга.

Компания отчаянно пыталась отменить последние торги, указывая как причину баг. Но правила биржи суровы, баг — это несерьезная причина, тем более это ответственность компании-трейдера, и американская Комиссия по фондовым биржам не дала разрешения отменить торги. Даже такая крупная компания как Knight, и даже при таком огромном объеме покупки акций, все-таки не превысила установленный правилами порог в 30% роста цен, при котором торги могли бы отменить. Исключение составили лишь 6 самых крупных транзакций, которые и были отменены, а все остальные убытки пришлось принять на баланс. И баланс улетел в минус на почти полмиллиарда долларов.

Уже к вечеру высшему менеджменту стало понятно, что все ошибочно купленные активы придется распродавать с большим убытком. Ситуацию немного смягчила Goldman Sachs, прикупив себе остатки некогда мощнейшей и перспективной компании.

Баг 2000 года. Полтриллиона долларов убытков

Одна неправильная буква, точнее цифра, способна принести убытков на полтриллиона долларов. Так случилось более двадцати лет назад, в канун нового столетия и тысячелетия. В англоязычном мире этот феномен был известен как Y2KBug, или “миллениум-баг”. Коротко: компьютеры неправильно обрабатывали все даты позже 31 декабря 1999 г. 

Оказалось, в большинстве компьютеров той эпохи подсистема времени, а именно дат, оставалась почти без изменений с 1960х-1980х и до конца 1990х. В десятилетия, когда зарождалась компьютерная техника, было принято строжайше экономить место в памяти, довольствуясь всего двумя цифрами даты (последними), а “19” (почти) всегда отбрасывали (впрочем, так и сейчас, но, конечно, соответствующие выводы из Y2K Bug сделаны). Дефицит места в памяти, из-за дороговизны компьютеров вообще, и планок памяти в частности, а потом инерция — отсюда жесткие ограничения на каждый байт вплоть до 1990х.

Неумолимо приближалось новое столетие, и лишь немногие программисты и менеджеры понимали, что компьютеры, спроектированные на архитектурном уровне в 1960е-1970е, теоретически могут неправильно принимать введенные даты. А именно, дату “00” компьютеры обрабатывали как “1900”-й. Конечно, подобное недоразумение могло повлечь серьезнейшие последствия, если бы речь шла об гражданской и военной инфраструктуре, или массовое повреждение пользовательских данных, что тоже недопустимо. 

Громче всех паниковали СЕО банков. Как считать проценты, если депозит вернулся в прошлое на сто лет? Множились опасения насчет транспорта, особенно аэропортов, на электростанциях включая атомные, и на других объектах критической инфраструктуры. 

Реагируя на панику в СМИ, в США приняли специальный закон “О готовности к 2000 году”, который был должен подготовить критическую инфраструктуру и банки к миллениуму. С задачей в общем-то справились, никаких катастроф не случилось. Президент Клинтон создал “Совет по проблеме 2000 года”, с собой во главе. Этот совет, помимо обновления ПО государственной критической инфраструктуры, надзирал над банками и советовался с их директорами — как избежать убытков (которых в банковской сфере полностью избежать все-таки не удалось). Глобальные затраты на проверку и обновление инфраструктуры и банков превысили $600 миллиардов (да, шестьсот миллиардов долларов), по данным консалтинговой компании Gartner. 

Такие дела. Надеемся, что сейчас тестируют лучше. Хотя вряд ли.

***

Возможно будет интересно:

Баги войны

Баги войны: вторая часть

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

72 КОММЕНТАРИИ

Подписаться
Уведомить о
guest

72 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Gorshkov
Gorshkov
2 лет назад

Остается лишь надеяться, что сейчас тестируют лучше.

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

Ilona
Ilona
2 лет назад

Спасибо, познавательно!

Михаил
Михаил
2 лет назад

полезно и познавательно

Яков
Яков
2 лет назад

Интересно было почитать

Венера
Венера
2 лет назад

Очень интересно

Татьяна
Татьяна
1 год назад

а по критерию самые курьезные баги не будет статьи)?

Юлия
Юлия
1 год назад

Без тестов никуда

Людмила
Людмила
1 год назад

1) В предложении «Таблица поиска изготовленная инженерами Intel состояла из 1066 ячеек» не хватает двух запятых. 2) Числа в заголовках не читаются из-за большого количества нулей. Логичней писать «$193 млн убытков» или «$475 млн» 3) В любом случае, в заголовках должно быть единообразие. У вас в двух последних случаях вместо знака $ написано словами — «долларов» 4) полтриллиона — лучше 500 миллиардов. Триллион — редкое слово, сложно оценить его грандиозность. 5) «В основном, все же, точность вычислений “пентиума” страдала лишь в 9 или 10 разряде после точки» — лучше вместо цифр словами — девятом или десятом.

Владимир
Владимир
1 год назад
Ответить на  Людмила

Задротство 80 lvl! (ienrf)///

Анна Л.
Анна Л.
1 год назад
Ответить на  Людмила

Истинного тестера сразу видно! )) Да, это то, что бросается в глаза и цепляет. У меня у самой подобный «пунктик» всю сознательную жизнь ))

Эд
Эд
1 год назад
Ответить на  Людмила

Да ты шутница)

Dim
Dim
1 год назад
Ответить на  Людмила

«$193 млн убытков». Нулями авторы хотели подчеркнуть грандиозность потерь. Для этого нули подходят лучше. Но число в заголовках следовало бы разделить точками: $100.000.000 выглядит внушительнее, чем $100 млн.

Демон
Демон
1 год назад
Ответить на  Людмила

Душнила, привет.
(Но насчет сумм — я согласен)

Ольга
Ольга
9 месяцев назад
Ответить на  Людмила

Спасибо, да сбивает, приходится останавливаться и перечитывать, чтоб осмыслить, я читаю всегда вслух, если текст «корявый», тяжело воспринимать и что то остаётся недопонятым.

Павел
1 год назад

Хорошая статья. В основном все заточено про космос. Хотелось бы прочитать подобное про поезда и корабли.

Алина
Алина
1 год назад

Благодарю. Полезно и интересно

Ирина
Ирина
1 год назад

Thanks!

Олег
Олег
1 год назад

Хорошая статья!!

Байрта
Байрта
1 год назад

Очень интересно , и полезно. Спасибо !

Ярослав
Ярослав
1 год назад

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

"Ильич"
1 год назад

Помни о правиле всюду искать баги!!!
В этом тексте есть по крайней мере 1 баг — пропущены 2 запятые.
Будь на чеку! Нашего брата все стараются надурить!!!

Эвакуатор
1 год назад

Спасибо за материал — было интересно читануть!

Юлия
Юлия
1 год назад

++++

Ирина
Ирина
1 год назад

👍👍👍

Анна
Анна
1 год назад

Познавательно! Спасибо!

Диана
Диана
1 год назад

Очень интересно и познавательно

Татьяна
Татьяна
1 год назад

перерыв на 5 минут вкупе с интересными фактами! Яндекс , thank you!

Рио
1 год назад

Про червяка Морриса классная история. Но на самом деле этого студента заставил сознаться его отец, который работал на тот момент в Агенстве национальной безопасности компьютерным экспертом)) Та еще семейка, заставил сына слиться, а так бы никто и не знал о его «победах»)) В целом интересная статья, не зря потратил время)

нина
нина
1 год назад
Ответить на  Рио

спасибо за уточнение, картина стала немного другой теперь

Александр
Александр
1 год назад

Круто. Но не вспомнили ржачный фейл из-за ошибки в ПО, когда новейший американcкий истребитель переворачивался вверх шасси при пересечении экватора. Тоже ошибка в знаке «минус»

Дмитрий
Дмитрий
1 год назад

Круто ,значит инженер тестировщик будет долго востребованн рынке труда

Антон
Антон
1 год назад

А так интересно. Спасибо!

Алексей
Алексей
1 год назад

Интересные истории.

Максим
Максим
1 год назад

Да меня удевило

Анна Никитина
Анна Никитина
1 год назад

Интересные истории

Анна Никитина
Анна Никитина
1 год назад

Интересные истории, всё понятно

Светлана
Светлана
1 год назад

Очень интересно

Владимир
Владимир
1 год назад

интересно))))

Elena
Elena
1 год назад

Дорогие ошибки

Насиба
Насиба
1 год назад

интересно 👍

Валерий
Валерий
1 год назад

До сих пор помню этот 31.12,1999. Всех ИТР, кто так или иначе имел отношение к технологическим процессам, производству, вывели на дежурство, дополнительно в помощь технологическому персоналу производств: кабы чего не вышло, вдруг время в компах обнулится и завод встанет!!!… А мы тут как тут, в ручной режим управления быстренько все переведем, риски — убытки минимизируем ну и т.п. Короче. все обошлось. Утром поехали домой Новый Год отмечать.

Татьяна
Татьяна
1 год назад

Интересно и познавательно!

Сая
Сая
1 год назад

Интересно, очень дорогие ошибки.

Margo Leitz
Margo Leitz
1 год назад

Семь раз отмерь, один раз отрежь

Anatoly
Anatoly
1 год назад

ОР: Статья без ошибок в пунктуации.
ФР: В статье пропущено шесть запятых.

Спасибо, было интересно!

Ирина
Ирина
1 год назад

Спасибо, познавательно!

Олег
Олег
1 год назад

Познавательная информация. Очень интересно. Спасибо!

ИЛька
ИЛька
1 год назад

Круто) Отдельное спасибо комментариям)

Александр
Александр
1 год назад

Информация действительно интересная и полезная, особенно если ты впервые сталкиваешься с IT сферой!

Ольга
Ольга
1 год назад

Благодарю, расширили представления о профессии

Ольга
Ольга
1 год назад

Спасибо, очень познавательно.

Вита
Вита
1 год назад

Спасибо, это любопытно

александр
александр
1 год назад

Да мля крутой попадоз на бабки.

Сергей
Сергей
1 год назад

Интересные факты из истории

Оксана
Оксана
1 год назад

Очень познавательные истории и говорящие сами за себя…

Марина
Марина
1 год назад

Да, надо знать весь алгоритм и множество нюансов….

Франчэсско
Франчэсско
1 год назад

Семь кейсов наводят меня на старинную русскую поговорку: 7 раз отмерь — 1 раз отрешь. )

Ольга
Ольга
9 месяцев назад
Ответить на  Франчэсско

*отрежь

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

🔥 Популярное

💬 Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас