PDA

Просмотр полной версии : 10 худших багов в истории человечества


True
17.08.2009, 00:50
Если баги в программном обеспечении приводят к зависанию компьютера, то это ерунда. Гораздо хуже, если из-за ошибок в ПО ломаются автомобили, взрываются ракеты и погибают люди.

Самая первый компьютерный баг в истории был обнаружен в 1945 г., когда инженеры нашли в корпусе компьютера Harvard Mark II мотылька. Этот мотылек закорачивал контакты — и компьютер сбоил. Инженеры сделали запись в журнале событий «Первый случай обнаружения бага» (по-английски «bug» означает «насекомое»). С тех пор компьютерные сбои принято называть багами.

По мере распространения цифровых устройств баги все глубже проникают в нашу жизнь. Они окружают нас повсюду — на мобильных телефонах, в бытовой технике, в автомобилях. К счастью, обычно баги не приносят никакого вреда, кроме морального. Но бывает и по-другому, когда баг вызывает огромные финансовые потери и даже забирает человеческие жизни. Журнал Wired посвятил этой проблеме целую тему номера и опубликовал список 10 худших багов в истории человечества, в хронологическом порядке.

28 июля 1962 г. Космический аппарат Mariner I стартовал по направлению к Венере. Из-за поломки антенны корабль потерял связь с земными службами управлениями и перешел на собственную систему пилотирования. Но эта система содержала обидный маленький баг. В результате аппарат полетел совсем не в ту сторону и его пришлось подорвать над Атлантическим океаном. Последующее расследование установило, что в процессе программирования системы навигации была совершена маленькая опечатка — при вводе одной из формул был пропущен один символ.

1982 г. Авария на Транссибирском трубопроводе. Оперативники ЦРУ внедрили баг (отчет в формате PDF) в канадское программное обеспечение, управлявшее газовыми трубопроводами. Советская разведка получила это ПО как объект промышленного шпионажа и внедрила на Транссибирском трубопроводе. Результатом стал самый большой неядерный взрыв в истории человечества.


1985–87 гг. Несколько человек получили смертельную дозу облучения во время сеансов радиационной терапии с медицинским ускорителем Therac-25. Основанная на предыдущей версии ускорителя, «улучшенная» модель Therac-25 могла генерировать два вида излучения: слабое электронное бета-излучение и нормальное рентгеновское излучение. Еще одно «улучшение» состояло в том, что вместо электромеханической защиты пациента в устройстве была реализована программная защита, якобы более надежная. Обе новые функции были некорректно реализованы неопытным программистом, результатом чего стали как минимум пять смертей и огромное количество несмертельных случаев переоблучения.

1988 г. Переполнение буфера в Berkeley Unix. Первый в мире компьютерный червь (так называемый червь Морриса) заразил от 2.000 до 6.000 компьютеров менее чем за сутки, эксплуатируя уязвимость в реализации функции gets(). В ОС Berkeley Unix эта функция ввода/вывода не имела ограничения на максимальную длину.

1988–96 гг. Генератор случайных чисел Kerberos в течение нескольких лет широко использовался в различных системах шифрования. Предполагалось, что программа должна выбирать ключ случайным образом из многих миллиардов чисел, но генератор случайных чисел выбирал из гораздо меньшего набора численностью примерно в миллион. Как результат, в течение восьми лет любой пользователь мог без труда проникнуть в компьютерную систему, которая использовала модуль Kerberos.

15 января 1990 г. Падение телефонной сети AT&T. Ошибка в новой версии прошивки междугородних коммутаторов привела к тому, что коммутатор перезагружался, если получал специфический сигнал от соседнего коммутатора. Но беда в том, что этот сигнал генерировался в тот момент, когда коммутатор восстанавливал свою работу после сбоя. В один прекрасный день, когда какой-то коммутатор в Нью-Йорке перезагрузился, он подал тот самый злополучный сигнал — и началось. Вскоре 114 соседних коммутаторов непрерывно перезагружались каждые 6 секунд, а 60 тыс. человек остались без междугородней связи на 9 часов, пока инженеры не установили на коммутаторы предыдущую версию прошивки.

1993 г. Широко разрекламированный процессор Intel Pentium неправильно производил деление с плавающей запятой, ошибаясь на 0,006%. Хотя эта проблема реально коснулась немногих пользователей, но стала настоящим кошмаром для имиджа Intel. Поначалу фирма согласилась менять процессор только для тех пользователей, которые могли доказать, что им в вычислениях нужна подобная точность, но затем согласилась поменять процессор всем желающим. Этот баг стоил Intel около $475 млн.

1995–96 гг. Пинг смерти. Отсутствие проверки на ошибки при обработке IP-пакетов позволяла порушить практически любую операционную систему, отправив ей через интернет специальный пакет («пинг»).

4 июня 1996 г. Новая ракета-носитель Ariane 5, результат многолетней работы европейских ученых, гордость стран Евросоюза, взорвалась через 40 секунд после своего первого старта. Только научное оборудование на борту ракеты стоило около $500 млн, не говоря о множестве побочных финансовых последствий. Система автоподрыва ракеты сработала после остановки обоих процессоров в результате цепочки ошибок. Началом этой цепочки послужило переполнение буфера, поскольку система навигации подала недопустимо большое значение параметра горизонтальной скорости. Дело в том, что система управления Ariane 5 переделывалась из Ariane 4, а там такого большого значения не могло быть теоретически. В целях снижения нагрузки на рабочий компьютер инженеры сняли защиту от ошибок переполнения буфера в этом программном модуле, поскольку были уверены, что такого значения горизонтальной скорости не может быть в принципе — и просчитались.

Ноябрь 2000 г. Национальный институт рака, Панама. Здесь произошла целая серия инцидентов, вызванная тем, что ПО для планирования радиационной терапии производства американской компании Multidata Systems International неправильно рассчитывало дозы облучения для пациентов. Программа позволяла врачу нарисовать на компьютерном экране расположение защитных металлических щитов, которые защищают тело от радиации. Но программа позволяла манипулировать только четырьмя щитами, тогда как врачи хотели задействовать пять. Они нашли способ «обхитрить» программу, если нарисовать все пять щитов в виде единого блока с дыркой посередине. Единственное, чего они не знали, что программа рассчитывает разные дозы радиации в зависимости от того, как нарисована дырка. Если рисовать ее особым образом, то устройство выдавало двойную дозу радиации. Как минимум восемь человек погибли, а еще 20 получили переоблучение. Врачи, которые должны были вручную перепроверять расчеты программы, были осуждены за убийство.

Все эти примеры, а особенно последний, еще раз показывают, что никогда нельзя в полной мере доверять компьютерам. Ведь программы для компьютеров создают люди, а людям свойственно ошибаться.
Источник (https://philosopher.kiev.ua/forum/index.php/topic,201.0.html)

Яблонька_цветущая
17.08.2009, 02:08
Жуууть..

Арвен
17.08.2009, 10:10
Страшнее всего - потеря человеческих жизней... :(

QCosa
17.08.2009, 11:46
жестко

(врачам походу вообще не стоит доверять компьютеры)

Lego
17.08.2009, 14:06
фигасе баги бывают

Nike
17.08.2009, 17:25
Коллеги из израильского отдела компании Моторола рассказывали такую байку...

Израиль. Пустыня над Мёртвым морем. Тренировки ВВС. Чешет Ф16 на бреющем, на кочках прыгает. Подлетает к Мертвому морю... РЕСЕТ всей навигационной системы!!! А скорость больше 400 км\час.

Вздрючивают мотороллеров-разработчиков. Повторяют полет. РЕСЕТ!!! Повторяют весь цикл, включая операции над разработчиками многократно. В летящем самолете отлаживать программу трудно. На земле все тесты проходят на УРА. Летчики, мягко говоря, не проявляют желания летать без бортового компьютера. Район Мертвого моря - стратегически важный и Генштаб имеет всех во все дыры и даже проковыривает новые. Короче, ситуация - два туза на мизере.

В конце концов один умник догадался. Высота Мёртвого моря - МИНУС 500 метров. Полет бреющий. Так когда этот пепелац пролетал через 0 высоты, бортовой компьютер по простому делал деление на 0 и рестарт аппаратуры, неизбежный как мировая революция.

С тех пор этот случай - неизменная часть Моторольского курса по микроконтроллерам.
(ц) фидонет

Shaman
18.08.2009, 10:29
С тех пор этот случай - неизменная часть Моторольского курса по микроконтроллерам. Полагаю, что теперь уже не только Моторольского. :sarcastic:

True
18.08.2009, 10:55
на ithappens пару нарыл:

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

Хотите узнать, что такое настоящая ошибка?

Представьте: здоровенный автоматический погрузчик, управляемый программой, которую написали в твоём отделе, вываливает восемь с половиной тонн строительного мусора прямо перед зданием управления.

В день приезда генерального директора.
На машину генерального директора.
В которой мирно спал кот жены генерального директора.

Ошибки программирования, говорите? Автопогрузчик вывалил на машину гендиректора восемь тонн мусора? Фигня!

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

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

Вот это — ошибка программирования!

Nike
18.08.2009, 11:10
True, я бы сказал, это ошибка проектирования складов. Должны быть предусмотрены такие ситуации. Укрепленные ноги стеллажей, отбойники для съехавших с катушек механизмов и прочее. Иначе это всё равно, что построить картонный дом на пляже и плакать, что его снесло первым штормом.

А по первому эпизоду сильно похоже на подставу :)

True
18.08.2009, 11:39
Nike, согласен. :agree:

donnickova
09.10.2009, 15:25
на ithappens пару нарыл: над этой бедной полстраны смеялось, теперь еще и вы тоже(