testengineer.ru

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

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

Автор

Дата

Категория

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

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

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

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

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

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

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

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

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

Официальный отчет 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 года. Полтриллиона долларов убытков

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

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

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

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

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

Такие дела

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

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

Типичные фейлы автоматизатора-новичка

или

Почему ручное тестирование будет жить вечно

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

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

1 КОММЕНТАРИЙ

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

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

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

$1100*
медианная зарплата в QA в ноябре

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

Последние публикации

Последние комментарии