-ѕоиск по дневнику

ѕоиск сообщений в Shadow3dx

 -ѕодписка по e-mail

 

 -—татистика

—татистика LiveInternet.ru: показано количество хитов и посетителей
—оздан: 07.03.2009
«аписей:
 омментариев:
Ќаписано: 14634

—амые €ркие и масштабные баги в истории

„етверг, 25 ‘еврал€ 2016 г. 14:33 + в цитатник

Ћюбой программист регул€рно сталкиваетс€ с багами. » чем сложнее система, тем глюков больше. Ќекоторые из них вполне безобидные, но есть и такие, которые принесут очень много проблем. ѕорой даже в планетарных масштабах.

»так, далее о том, как одной сменой текущей даты превратить iPhone в "кирпич", самом дорогом дефисе в истории —Ўј, черном понедельнике, делении на ноль, реальной эпидемии в придуманном мире и других знаменитых багах.

bagi_01 (640x360, 182Kb)

¬место предислови€

—огласно ¬икипедии, в программировании баг (англ. bug — первичные значени€: клоп, любое насекомое, вирус) — жаргонное слово, обычно обозначающее ошибку в программе или системе, из-за которой программа выдает неожиданное поведение и, как следствие, результат.

ѕервое применение слова bug по отношению к технике приписывают “омасу Ёдисону. ѕо одной из легенд, еще во врем€ работы над фонографом, он долго не мог пон€ть, почему же собранный прототип отказываетс€ работать. ѕеребрав в уме все возможные варианты и так и не найд€ решени€, он предположил, что во врем€ сборки между детал€ми устройства мог попасть жук. » хот€ на самом деле никаких насекомых в фонографе не оказалось, в будущем он продолжил использовать слово bug дл€ обозначени€ досадных неисправностей.

bagi_02 (640x500, 125Kb)

¬ качестве примера можно привести одну из записей из его рабочего дневника, датированную 1878 годом:

"“ак было со всеми моими изобретени€ми. ѕервый шаг — интуици€, котора€ приходит как вспышка, затем возникают трудности — устройство отказываетс€ работать, и именно тогда про€вл€ютс€ "жучки" — как называют эти мелкие ошибки и трудности — и требуютс€ мес€цы пристального наблюдени€, исследований и усилий, прежде чем дело дойдЄт до коммерческого успеха или неудачи"

Ћюбопытно, что слово debugging, которое в наши одни обозначает этап отладки программы и поиск всех возможных проблем, встречалось еще в ќксфордском словаре 1945 года выпуска. ѕравда, тогда речь шла не о программах, а об авиационных двигател€х.

ѕрименимо к компьютерам и программному обеспечению слова "баг" и "дебагинг" стали использовать несколько позже. —читаетс€, что родоначальником этой традиции в 1946 году стала контр-адмирал флота —Ўј √рейс ’оппер, котора€ столкнулась с неполадкой в работе с вычислительной машиной Harvard Mark II.  ак вы€снилось впоследствии, причиной странного поведени€ Ё¬ћ оказалс€ самый обычный мотылек, который попал между контактами одного из электромеханических реле. “рупик несчастного насекомого был бережно извлечен из недр машины и приклеен скотчем к странице рабочего дневника. ѕодпись ниже гласила: "ѕервый реальный случай обнаружени€ бага".

bagi_03 (640x504, 255Kb)

¬ наш с вами век реальные насекомые уже вр€д ли смогут привести к сбою в работе программы. «ато вот их цифровые сородичи ежегодно доставл€ют люд€м кучу проблем. —лучаев, когда одна крохотна€ ошибка программиста приводила к огромным непри€тност€м, в новейшей истории полно и случай в iPhone – еще цветочки.

¬ременные сложности

—ломать за 60 секунд

Ќа дн€х владельцы техники Apple случайно вы€снили, что если установить на iPhone или iPad дату 1 €нвар€ 1970 года, а затем перезагрузить устройство, то оно превратитс€ в "кирпич". Ќа экране будет вечно светитьс€ логотип Apple и больше загрузитьс€ устройство не сможет уже никогда. Ќу или как минимум – до вашего визита в сервисный центр, хот€ и с этим пунктом пока не все €сно.

Ќа данный момент установлено, что ошибка встречаетс€ на мобильных устройствах Apple с 64-битными процессорами Apple A7, A8, A8X, A9 и A9X. ¬ерси€ ќ— значени€ не имеет.  атегорически не рекомендую проводить подобные эксперименты на своем аппарате – это гарантированно приведет к серьезной поломке, справитьс€ с которой своими силами вы не сможете. “ак же хочу обратить ваше внимание на всевозможные "приколы", уже второй день гул€ющие по интернету. Ўутники предлагают помен€ть врем€ на смартфоне чтобы увидеть секретную пасхалку или суметь бесплатно скачать платные программы из AppStore. –езультат – "кирпич" вместо смартфона.

bagi_04 (640x318, 125Kb)

—уть бага. ¬ Unix-подобных ќ— врем€ считаетс€ не совсем привычным дл€ нас образом. ƒл€ Unix текущее врем€ – это число секунд, прошедшее от точки отсчета, за которую была прин€та полночь 1 €нвар€ 1970 года. ƒл€ человека такой способ не очень удобен, а вот дл€ компьютера — в самый раз. „то именно происходит в "голове" у iPhone, который решил, что присутствует при зарождении Unix вселенной, пока не известно, но что сказываетс€ это на нем не лучшим образом – уже неоднократно проверенный факт.

¬прочем, попытатьс€ самим предположить, где именно закралс€ "баг", нам никто не мешает.

“е, кто играл в игры времен MS-DOS наверн€ка сталкивались с разными багами, возникающими при переполнении счетчика.   примеру, в Civilization был очень миролюбивый правитель по имени √анди, у которого параметр агрессии был равен 1. ≈сли его еще немного "задобрить", предложив прин€ть какой-то подарок или заключив союз, значение агрессии вначале падало до нул€… а затем резко взлетало до небес. ƒело в том, что переменна€ предполагала значени€ от 0 до от 255 и при попытке отн€ть единицу от нул€ вновь становилась максимальной. ѕрограммисты просто не предусмотрели проверку текущего значени€ переменной, что и приводило к ошибке.

bagi_05 (636x398, 203Kb)

ѕодобна€ ситуаци€ встречалась и во многих других играх.   примеру, в оригинальной X-Com максимально прокачанный боец рисковал внезапно стать беспомощным младенцем, так как с очередной прибавкой к характеристикам значени€ счетчиков скидывались до нул€.

ћожно предположить, что что-то подобное происходит и с iPhone — во врем€ загрузки iOS дл€ каких-то своих целей требуетс€ вз€ть значение времени, которое на пару секунд меньше текущего… а так как дата 1 €нвар€ 1970 года и так прин€та системой за 0, то в результате значение 64-битной переменной становитс€ максимальным. –ади интереса можно попробовать посчитать, кака€ это получаетс€ дата, но очень подозреваю, что наше —олнце к тому времени уже точно погаснет.

”верен, что рано или поздно с этой проблемой Apple разберетс€. Ќо вот 19 €нвар€ 2038 года € бы все же посоветовал всем быть поосторожнее – именно в этот момент значение Unix-времени превысит 2147483647 и перестанет помещатьс€ в стандартную переменную (беззнаковое 32-битное целое число). » как на это отреагируют 32-битные устройства по всему миру — загадка.


Ѕаг “ыс€челети€

Millennium Bug – один из самых нашумевших багов ќ—. ¬ теории, он мог привести к тому, что после 2000 года отсчет времени в разных ќ— пошел бы с нул€. Ќе знаю, насколько фатальной оказалась бы эта проблема, но ситуации, когда курс лечени€ составл€л бы -99 лет и 11 мес€цев или когда пациенту до даты своего рождени€ оставалось бы жить еще 80 лет, при€тными точно не назовешь.

bagi_06 (600x201, 33Kb)

—уть бага. ¬о многих ќ— год записывалс€ только двум€ последними цифрами. “ак, дл€ обозначени€ 1998 года использовались цифры 98, дл€ 1999 – 99 и так далее. ѕо этой системе 2000 год обозначалс€ как 00, что дл€ компьютера ничем не отличалось от 1900 года.

Ќесмотр€ на свое страшное название, на практике ни к каким особым проблемам этот баг не привел. ћожет быть, за это стоит благодарить оперативно сработавших программистов, которые к 2000 году смогли исправить большую часть ѕќ. ј возможно, что это просто у страха глаза были велики. ¬ любом случае, по-насто€щему опасные баги выгл€д€т совершенно иначе и крайне редко предупреждают о своем существовании за несколько лет до возникновени€ потенциальной проблемы.


„ерез тернии к звездам
—амый дорого дефис в истории

ћаринер-1 – космический аппарат NASA, который был создан дл€ изучени€ ¬енеры. «апуск аппарата состо€лс€ 22 июл€ 1962 года, однако уже через несколько минут после старта он был уничтожен.

ѕервые проблемы начались уже спуст€ 293 секунды после запуска, именно в этот момент ћаринер-1 потер€л св€зь с «емлей. “ака€ ситуаци€ была изначально предусмотрена инженерами, и управление аппаратом прин€л на себ€ бортовой компьютер. ¬от только компьютер тут же "запаниковал" и выдал команду на очень сильную коррекцию курса, котора€ в тот момент была совершенно не нужна и вывела ћаринер-1 на опасную траекторию. “ак как падение ракеты к тому моменту было уже практически неминуемо, специалисты NASA прин€ли решение ее уничтожить.

bagi_07 (512x640, 219Kb)

—уть бага. ¬о врем€ перевода написанных от руки формул в код программы, программист пропустил символ надчеркивани€ (макрон). ќтсутствие в коде одной единственной черточки привело к тому, что бортовой компьютер стал воспринимать незначительное отклонение от траектории движени€ как очень серьезное и срочно ввел значительные поправки, которые и сбили ракету с курса.

¬прочем, в некоторых верси€х произошедшего вместо символа надчеркивани€ фигурирует дефис, а кто-то предполагает, что во врем€ составлени€ программы на ‘ортране программист просто перепутал точку с зап€той.


ћетод копипаста

"јриан 5" (фр. Ariane 5) — европейска€ ракета-носитель семейства јриан, предназначена дл€ выведени€ полезной нагрузки на низкую опорную или геопереходную орбиту. ќна до сих пор €вл€етс€ основной ракетой-носителем ≈ ј и останетс€ таковой минимум до 2023 года. » тем не менее, ее первый запуск закончилс€ аварией, котора€ стала примером одного из самых дорогих багов в истории.

—тарт ракеты состо€лс€ 4 июн€ 1996 года. ѕрактически разу после старта аппарат вышел на нерасчетную траекторию и на 39-й секунде полета был уничтожен. ¬месте с ракетой было потер€но несколько научных спутников общей стоимостью $500 миллионов.

—уть бага. ¬о врем€ работы над ѕќ новой ракеты программисты использовали куски уже готового кода, ранее написанного ими дл€ јриан 4. ¬ результате, иные технические характеристики новой ракеты и немного друга€ расчетна€ траектори€ полета привели к тому, что ее текуща€ скорость превысила имеющиес€ в программе ограничени€. ¬ какой-то момент бортовой компьютер просто не смог перевести значение скорости из 64-битного формата в 16-битный (число оказалось больше 32,767 и просто "не влезло" в переменную), что и вызвало сбой в работе ѕќ.


÷ена ошибки
«ащита от дурака

¬ сент€бре 1997 года авианосец —Ўј USS Yorktown в течение трех часов дрейфовал в море с неработоспособными бортовыми компьютерами и системой управлени€ ходовой частью.   счастью дл€ экипажа, ситуаци€ произошла во врем€ учебных маневров, а не боевых действий.

—истема управлени€ кораблем состо€ла из 27 компьютеров Pentium Pro PC 200-MHz на Windows NT, соединенных между собой высокоскоростными волоконно-оптическими лини€ми св€зи. “ака€ система позвол€ла сократить экипаж авианосца примерно на 10%, что экономило ¬ћ— —Ўј около $ 2,8 млн в год. » все шло просто отлично, пока в какой-то момент по сети не прокатилась насто€ща€ волна сбоев, котора€ полностью вывела все компьютеры из стро€.

bagi_08 (600x458, 123Kb)

—уть бага. Ќа ноль делить нельз€ – это знают даже ученики начальной школы. Ќо компьютер – не человек, и, если попросить его поделить какое-то число на ноль, он честно попытаетс€ это сделать. ѕричем, этой неразрешимой задаче он станет удел€ть все свое врем€ и внимание. ≈сли, конечно, программист не предусмотрит специальную "защиту от дурака", которой в бортовых системах USS Yorktown почему-то не было. ¬ результате, когда один из членов экипажа по ошибке ввел ноль в бортовую систему управлени€, она вышла из стро€, на несколько часов оставив авианосец совершенно беспомощным.


ќдна треть секунды

  сожалению, далеко не все "баги" в ѕќ оканчиваютс€ столь удачно. ќчень часто они могут привести к человеческим жертвам, что и произошло в 1991 году во врем€ войны в ѕерсидском заливе. »з-за ошибки в ѕќ зенитный ракетный комплекс Patriot отказалс€ перехватывать запущенную ракету, что привело к человеческим жертвам.

bagi_09 (640x360, 119Kb)

—уть бага. »з-за особенностей округлени€ времени, каждые 100 часов бесперебойной работы «–  Patriot его часы сбивались примерно на треть секунды. ¬ итоге компьютер воврем€ обнаружил запуск вражеской ракеты, но из-за бага со временем допустил критическую ошибку при просчете траектории. –ешив, что ракеты уже не существует, система отменила попытку перехвата.


÷епна€ реакци€
 омпьютерный разум

„Єрный понедельник (англ. Black Monday) — понедельник 19 окт€бр€ 1987 года — день, в который произошло самое большое падение индекса ƒоу-ƒжонса за всю его историю. ’от€ еще утром абсолютно ничто не предвещало беды и никаких объективных причин дл€ обвала рынка просто-напросто не было.

bagi_10 (491x700, 289Kb)

—уть бага. ƒо сих пор есть несколько теорий произошедшего, но в большинстве случаев основной причиной называют примитивную логику ѕќ дл€ программного трейдинга. ¬ какой-то момент рынок начал падать, и самые осторожные "электронные помощники" трейдеров поспешили побыстрее избавитьс€ от всех дешевеющих ценных бумаг. Ёто привело к тому, что вместо обычной коррекции случилась сама€ насто€ща€ цепна€ реакци€ — рынок оказалс€ перенасыщен, цены на бумаги упали еще больше и в дело включилось ѕќ остальных игроков. ¬ итоге один крохотный снежок спровоцировал огромную горную лавину, которую никто совершенно не ожидал.

— точки зрени€ финансовых последствий, "черный понедельник" стал далеко не самым страшным событием прошлого века (хот€ и затронул очень многие страны), однако многие финансисты и трейдеры до сих пор вспоминают о нем с содроганием. Ёто был первый случай, когда машины попросту оттеснили людей в сторону и стали играть друг с другом по своим собственным правилам. Ћюди же выступали в роли сторонних наблюдателей, слишком медленных и неповоротливых дл€ того, чтобы их стоило принимать во внимание.


Ёпидеми€

13 сент€бр€ 2005 года к попул€рной онлайн игре World Of Warcraft вышло новое обновление.  роме всего прочего, в нем по€вилс€ новый компьютерный персонаж ’аккар, владеющий уникальным заклинанием "«араженна€ кровь". ѕопавший под магический удар игрок начинал медленно тер€ть очки здоровь€, причем эффект мог перекинутс€ на любого подошедшего к нему соратника. ¬ целом – ничего сверхъестественного, вселенна€ WOW и так была полна кучей интересных и необычных персонажей, так что многие игроки вообще не обратили внимани€ на это нововведение.

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

bagi_11 (600x480, 215Kb)

¬прочем, сам € в World Of Warcraft никогда не играл и могу пересказать проишествие только с чужих слов. ¬озможно, кто-то из читателей мен€ поправит.

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

¬место послеслови€

” каждой медали есть две стороны, и технический прогресс исключением не €вл€етс€. Ѕаги вошли в нашу жизнь также прочно, как компьютеры, интернет и мобильные телефоны. »ногда они бывают забавными, иногда – опасными, но чаще – просто непри€тными.

„то самое смешное, очень многих людей т€нет протестировать все найденные баги на собственной шкуре.  азалось бы, совершенно очевидно, что это так же глупо, как вставл€ть спицы в электрическую розетку. Ќо нет, количество людей, специально готовых вставить стилус в Galaxy Note не той стороной или решивших проверить, сработает ли баг с датой на их iPhone, с каждым годом становитс€ все больше и больше.

ћожет быть, это тоже своего рода баг современного общества, который мы все где-то и когда-то прогл€дели?

–убрики:  »нтересные истории
ћетки:  
ѕонравилось: 2 пользовател€м



 

ƒобавить комментарий:
“екст комментари€: смайлики

ѕроверка орфографии: (найти ошибки)

ѕрикрепить картинку:

 ѕереводить URL в ссылку
 ѕодписатьс€ на комментарии
 ѕодписать картинку