четвер, 13 вересня, 2018, 10:19 Суспільство
Ціна помилки: найдорожчі комп’ютерні баги в історії ІТ
Фото: ua.depositphotos.com
Фото: ua.depositphotos.com

Комп’ютер – це лише шматок заліза і пластику, якщо у ньому не встановлене відповідне програмне забезпечення (ПЗ). Саме ПЗ робить комп’ютер дійсно «розумним». Однак через програмне забезпечення стаються найбільші ляпи пов’язані із комп’ютерами – помилки, або так звані «баги». Щоб їх не було, в ІТ є спеціальні люди, або тестери – це програмісти, які перевірять/тестують програми на різноманітні помилки та збої у роботі. Але не завжди виходить перевірити всі можливі конфігурації програми. Історія знає багато випадків, коли через неуважність або неякісну роботу програмістів чи тестерів – сила силенна грошей горіли на очах або, ще гірше, – помирали люди.

За однією із легенд, 9 вересня 1945 року вчені Гарвардського університету, які тестували обчислювальну машину Mark II Aiken Relay Calculator, знайшли метелика, що застряг між контактами електромеханічного реле. Тоді програмістка Грейс Хоппер вперше вжила цей термін. Знайдена комаха була вклеєна до технічного щоденника, із супроводжувальним надписом: «First actual case of bug being found» (англ. «перший випадок у практиці, коли було знайдено комаху»). Цей цікавий факт став передумовою для вживання слова «баг» у значенні «помилка», яку виявляють програмісти-тестери у своїй роботі.

Запис у журналі про, ймовірно, найперший «баг». Фото: Вікіпедія
Запис у журналі про, ймовірно, найперший «баг». Фото: Вікіпедія

Тож, кореспондент ІА ZIK підготував збірку найцікавіших та найдорожчих таких «комах», які будь-коли ламали комп’ютерні програми.

1962 рік – через дефіс знищили супутник, який летів на Венеру

Mariner 1. Фото з відкритих джерел
Mariner 1. Фото з відкритих джерел

Маринер-1 – космічний апарат NASA, який був створений для вивчення Венери. Запуск апарату відбувся 22 липня 1962 року, однак вже через кілька хвилин після старту він був знищений. Втрати становили 18,5 мільйона доларів.

Перші проблеми почалися через 293 секунди після запуску, саме в цей момент Маринер-1 втратив зв’язок із Землею. Така ситуація була спочатку передбачена інженерами, і управління апаратом прийняв на себе бортовий комп’ютер. Ось тільки комп’ютер тут же «запанікував» і видав команду на дуже сильну корекцію курсу, яка в той момент була абсолютно не потрібна і вивела Маринер-1 на небезпечну траєкторію. Так як падіння ракети було вже практично неминуче, фахівці NASA вирішили її знищити.

Помилка сталася, оскільки під час перекладу написаних від руки формул в код програми, програміст пропустив символ над кресленням (дефіс). Відсутність в коді однієї-єдиної рисочки призвело до того, що бортовий комп’ютер став сприймати незначне відхилення від траєкторії руху, як дуже серйозне і терміново ввів значні поправки, які і збили ракету з курсу.

1978 рік – падіння даху нового стадіону

дах стадіону Хартфорд Цівік-центру. Фото: software-testing.ru
дах стадіону Хартфорд Цівік-центру. Фото: software-testing.ru

18 січня 1978 року не минуло й кількох годин після зустрічі двох баскетбольних команд, як сталевий дах стадіону Хартфорд Цівік-центру (Коннектикут, США) впав під вагою мокрого снігу. Втрати – 70 мільйонів доларів. Причиною став програміст CAD – програми, яка використовувалася для дизайну стадіону. Він припустив, що опори даху будуть тільки стискатися. Тому, коли одна з них впала під вагою снігу, це запустило ланцюгову реакцію, і дах впав, як фішки доміно.

1982 рік – шпигунські ігри, які породили вибух потужністю у ядерний

Фото: Chert-poberi.ru
Фото: Chert-poberi.ru

У червні 1982 року в Сибіру прогримів вибух силою в три кілотонни. Американці спочатку сполошилися, вирішивши, що це ядерний заряд. Але електромагнітного імпульсу, який повинен бути в таких випадках, їх супутники-шпигуни не зафіксували. Незабаром в Білий дім надійшли роз’яснення від директора ЦРУ, мовляв, все нормально, вибух – наша робота.

Всередині 70-х американська розвідка, проаналізувавши науково-технічні досягнення СРСР, дійшла висновку, що ті багато в чому засновані на використанні або копіюванні технічних новинок Заходу. В результаті США ввели жорсткі обмеження на експорт в Радянський Союз комп’ютерів і програмного забезпечення. Але досягнення «зарубіжної» інженерної думки все одно потрапляли в Росію завдяки спеціальним агентам.

У ті роки якраз будувалися гігантські трубопроводи для поставок радянського газу в Західну Європу. ЦРУ підсунуло одному з «закупників» автоматизовані канадські системи управління для їхніх транссибірських трубопроводів. В комп’ютерних блоках були дефектні чіпи – контрольну перевірку вони витримували, але при роботі починали «чудити», і в трубах різко змінювалося тиск. В результаті зварювальні шви не витримували, відбувалися витік газу і надпотужний вибух.

Цікаво, що після цього вибуху всі вкрадені чи куплені на Заході програми були піддані ретельній перевірці фахівцями КДБ.

1983 рік – за крок від Третьої світової війни

Станіслав Петров. Фото: na-golovu.ru
Станіслав Петров. Фото: na-golovu.ru

Вночі 26 вересня 1983 року підполковник Станіслав Петров чергував як старший оперативний офіцер командного пункту радянської системи космічного спостереження та раннього попередження ракетного нападу в центрі стратегічних військ ППО СРСР «Серпухов-15» (Московська область). Радянський супутник п’ять разів подав сигнал «запуск з США ядерної міжконтинентальної балістичної ракети в бік СРСР». Після третього сигналу інформація автоматично надійшла верховному головнокомандувачу СРСР, генеральному секретарю ЦК КПРС Юрію Андропову, який на той час уже був тяжко хворою людиною. На прийняття остаточного рішення про ядерний удар у відповідь в радянського державного керівництва лишалося 10 хвилин. У самого Петрова було три хвилини на доповідь командуванню.

У цій критичній ситуації, Станіслав Петров, поміркувавши, логічно оцінив сигнал супутника як помилкова тривога. «Це не ракетна атака»,– доповів він командуванню. Таким чином Станіслав Петров на власний страх і ризик завадив запуску радянських ядерних ракет у відповідь і запобіг початку ймовірної ядерної війни, котра могла перерости у Третю світову війну.

Розслідування інциденту показало, що програма помилково прийняла віддзеркалення сонячних променів від висотних хмар при заході сонця за спалахи від старту двигунів ракет «Мінітмен». Петрова, через його дії, що розбігалися із чинною на той час службовою інструкцією, звільнили зі збройних сил СРСР у відставку в ранзі підполковника без всякої подяки.

1985 рік – медичні машини-вбивці

Фото: habr.com
Фото: habr.com

Медичний пристрій для радіаційної терапії Therac-25 працював неправильно і давав смертельну дозу радіації пацієнтам. Чотири людини загинули, ще двом було завдано тяжкої шкоди для здоров’я.

У пристрої було два режими роботи – перший, коли промінь електронів у невеликих дозах прямував безпосередньо на пацієнта; і другий, коли промінь спершу націлювався на металеву «ціль», яка перетворювала його в радіаційні промені і передавала пацієнтові. У попередніх моделях пристрою другий режим був оснащений фізичними детекторами наявності «цілі» на місці, щоб промені не спрямовувалися у колосальних дозах безпосередньо на пацієнта. У Therac-25 фізичні детектори були замінені програмними. На жаль, ПЗ було піддано «арифметичному перевантаженню» – система починала використовувати у внутрішніх розрахунках числа, які були надто великими для операцій з ними. Якщо саме в цей момент оператор налаштовував машину, перевірки безпеки відмовляли і «ціль» не переміщалася на місце. В результаті пацієнт отримував в 100 разів більшу дозу радіації.

1987 рік – крах Wall Street

Фото: dailytimes.com.pk
Фото: dailytimes.com.pk

У «Чорний понеділок», 19 жовтня 1987 року, індекс Dow Jones впав на 508 пунктів, втративши 22,6% своєї вартості. S&P 500 впав на 20,4%. Це була найбільша втрата для фондової біржі Wall Street в її історії – 500 мільярдів доларів за одну добу. Так, фондові біржі Австралії втратили до кінця жовтня 41,8%, Канади – 22,5%, Гонконгу – 45,8%, Великобританії – 26,4%.

Досі є кілька теорій, які пояснюють, що сталося, але в більшості випадків основною причиною називають примітивну логіку ПЗ для програмного трейдингу. У якийсь момент ринок почав падати, і самі обережні «електронні помічники» трейдерів поквапилися швидше позбутися всіх цінних паперів, які дешевшали. Це призвело до того, що замість звичайної корекції трапилася справжнісінька ланцюгова реакція – ринок виявився перенасичений, ціни на папери впали ще більше і в справу включилося ПЗ інших гравців. В результаті один крихітний сніжок спровокував величезну гірську лавину, яку ніхто абсолютно не очікував.

1990 рік – телефони компанії AT&T замовкли

Фото: interesnoznat.com
Фото: interesnoznat.com

Перемикач на одній з 114 автоматичних телефонних станцій (АТС) американської компанії AT&T був механічно пошкоджений і автоматично відключив всю АТС. Коли АТС включилася, вона відправила повідомлення на інші АТС, що викликало їх відключення і цим самим поклала всю мережу AT&T на дев’ять годин. АТС продовжували послідовно перезавантажуватися, і компанія спочатку вирішила, що зазнала хакерської атаки. 60 тисяч людей не змогли додзвонитися, загальні втрати компанії становили 60 мільйонів доларів.

А причиною став невеликий рядок коду в складному оновленні для ПЗ АТС, встановленому з метою підвищити швидкість обміну даними. Спочатку перемикачі працювали за наступним принципом – якщо ламався один, він надсилав повідомлення «не турбувати» на інші, інший перемикач підхоплював, що трафік зламався, перезавантажуючись, щоб перейти в інший режим і не турбувати перший перемикач. Періодично робочий перемикач перевіряв той, що зламався, і якщо виявляв активність, знову перезавантажувався, щоб перейти в звичайний режим. Після впровадження поліпшення проблемний перемикач висилав два повідомлення, і друге наздоганяло робочий перемикач рівно в момент перезавантаження. Другий перемикач припускав, що з його власної внутрішньої логікою щось не так, і відправляв повідомлення «не турбувати» далі, передаючи проблему на наступний перемикач. В результаті досить було одного збою – і вся система ламалася.

1991 рік – ПВО, яке не змогло збити іракської ракети

Фото: haaretz.com
Фото: haaretz.com

Американський зенітно-ракетний комплекс (ЗРК) «Patriot» не зміг перехопити іракську ракету, яка потрапила в казарми США. 28 осіб загинуло, 100 поранено. Через помилки округлення в ПЗ ЗРК воно невірно розрахувало час, і в результаті ракета була проігнорована. Кожні 100 годин безперебійної роботи комплексу приводили до відхилення на 1/3 секунди.

1993 рік – Pentium, який не міг ділити всі числа

Фото: habr.com
Фото: habr.com

У 1993 році професор математики Лінчбургского коледжу Томас Найслі виявив баг в популярному процесорі Pentium і опублікував про це статтю.

Новий Pentium-чіп компанії Intel періодично робив помилки при діленні чисел з плаваючою крапкою всередині певного діапазону. Наприклад, 4195835.0 / 3145727.0 видавало результат 1.33374 замість 1.33382 – помилка в 0.006%. Проблема торкнулася невеликої кількості користувачів, але стала нічним кошмаром PR-служби. Було продано близько п’яти мільйонів дефектних чіпів. Intel спочатку запропонувала замінювати чіпи тільки тим, хто доведе, що потребує такої високої точності – проте в результаті замінені були всі чіпи. Втрати – 475 мільйонів доларів і пляма на репутації компанії.

А все тому, що була допущена помилка в таблиці розподілів, яка приводила до пропуску приблизно п’яти з кожної тисячі показників, що призводило до помилки заокруглень.

1996 рік – самознищення дорогої ракети Ariane 5

Фото: SpaceFlight Insider
Фото: SpaceFlight Insider

4 червня 1996 року відбувся невдалий запуск ракети-носія Ariane 5, яка була розроблена Європейським космічним агентством. Ракета вибухнула на 39-й секунді польоту через невірну роботу бортового програмного забезпечення. Разом з ракетою пропало чотири наукових супутника, призначених для вивчення взаємодії магнітного поля Землі з сонячними вітрами. Ця історія запам’яталася як одна з найдорожчих комп’ютерних помилок. Втрати становили 500 мільйонів доларів (супутники) плюс вісім мільярдів доларів витрат на розробку Ariane.

А причина помилки досить проста. Програмне забезпечення, встановлене на борту Ariane 5, було розроблено для більш ранньої моделі – Ariane 4. Більш потужний двигун Ariane 5 спровокував баг, який не зустрічався в попередніх версіях програмного забезпечення. Бортовий комп’ютер спробував перевести швидкість ракети з 64-бітного формату в 16-бітний. Результат був занадто великим, і комп’ютер відмовив. Контроль над ракетою був переданий резервному комп’ютеру, який використовував той же самий алгоритм і, своєю чергою, вимкнувся. В результаті ракета отримала неправдиву команду на відхилення сопел прискорювачів, а пізніше і основного двигуна. На 39-й секунді польоту ракета стала руйнуватися під дією аеродинамічних сил і, відповідно, відбулося самознищення.

1999 рік – супутник згорів в атмосфері Марса

Фото: software-testing.ru
Фото: software-testing.ru

Cупутник «Mars Climate Orbiter» (MCO) летів до Марса десять місяців. 23 вересня 1999 року він мав видати гальмівний імпульс і перейти на високоеліптичну орбіту з періодом у 14 годин, а потім протягом двох місяців за допомогою ряду аеродинамічних маневрів у верхній атмосфері Марса довести орбіту до кругової. У розрахунковий час на висоті 193 км апарат включив двигуни для гальмування. Через п’ять хвилин MCO перестав подавати сигнали. З аналізу даних було припущено, що апарат пройшов над поверхнею Марса на висоті 57 км замість розрахункових 110 км і розпався в атмосфері.

Субпідрядник, який працював над багатьма інженерними задачами, не виконав найпростішого перетворення англійських одиниць виміру в метричну систему, тому не зміг правильно розрахувати задані команди. Диспетчери дійшли висновку, що супутник на великій швидкості увійшов в марсіанську атмосферу, де через виниклі перевантажень його системи зв’язку вийшли з ладу. Збитки становили 125 млн доларів.

2008 рік – новий термінал аеропорту Хітроу, де всі загубили свої валізи

Фото: PhotoTravelGuide.ru
Фото: PhotoTravelGuide.ru

У 2008 році в новому терміналі британського аеропорту Хітроу встановили суперсучасну систему контролю багажу, призначену для перевезення безлічі вантажів. Система була ретельно протестована з більш ніж 12 тисячами сумок і валіз. У підсумку, в день відкриття терміналу 42000 валіз загубилися, бо не полетіли разом зі своїми господарями. Було скасовано понад 500 авіарейсів.

А все тому, що ця нова система не впоралася з реальними сценаріями, які чомусь не були перевірені під час тестування. Наприклад, зняття багажу зі стрічки вручну (пасажир раптово згадав, що там цінні і потрібні йому просто зараз речі) ламало програму, і вона вимикалася.

 

Відтак, людський фактор найбільше впливає на якість та надійність програм. Можна мільйон разів перевіряти ПЗ на помилки, але завжди є імовірність того, що виникне такий баг, який поламає систему. Як кажуть програмісти-тестери – всього перевірити неможливо, а значить, цілком вірогідно, що саме ви виявите якийсь новий баг.

Підготував Юра Мартинович,
ІА ZIK

Читайте також: Збій комп’ютерної системи: 40 років тому 41 тисячу парижан одночасно звинуватили у вбивствах

Редакція не завжди поділяє позицію авторів публікацій.
* Якщо Ви знайшли помилку в тексті новини, виділіть її та натисніть Ctrl+Enter.
реклама
більше новин
Top
2018-09-24 18:31 :27