Сегодня в 2003 году произошел один из крупнейших блекаутов в мире

qLssV8jDl4I1

14 августа 2003 года в США и Канаде произошел блэкаут, лишивший 50 миллионов человек электричества и вызвавший убытки в несколько миллиардов долларов. Главной причиной аварии была названа ошибка в компьютерной программе оповещения.

На фото: спутниковый снимок Северной Америки во время блэкаута 2003 года.

Авария началась в 15:45 по стандартному восточному времени. Она затронула обширную северо-восточную зону США от Нью-Йорка до Детройта, вокруг Великих озер и севернее, вплоть до всей канадской провинции Онтарио. В Торонто и Нью-Йорке закрылись все аэропорты, прекратило работу метро, была парализована сотовая связь и интернет. Со спутниковых снимков эти регионы Северной Америки выглядели как черное пятно.

Согласно отчету комиссии, исследовавшей причины блэкаута, к аварии привело сочетание двух факторов. Во-первых, выход из строя линий электропередач из-за контакта с деревьями, которые вовремя не убрала управляющая компания FirstEnergy, а во-вторых, ошибки в программе производства General Electric, XA/21. Из-за них операторы FirstEnergy не знали об аварии более часа и не предпринимали никаких действий по восстановлению системы, в то время как электроподстанции выходили из строя одна за другой. Всего в ходе блэкаута перестали работать около сотни станций, и потенциально локальная авария стала одной из крупнейших в истории.

A0ggzLGsblI1

 

В Нью-Йорке блэкаут привел к остановке всего общественного транспорта. Изображение:NYDailynews

Баг в XA/21, как выяснилось потом, относился к классу ошибок, которые очень трудно обнаружить. Во время отладки они практически не воспроизводятся. Ошибка приводила к возникновению в программе состояния гонки. Так называется состояние в многопоточной программе, когда выполнение одной части кода зависит от времени выполнения другой. В общем случае такие ошибки предотвращают путем создания правильной системы синхронизации между потоками, чего, очевидно, не было сделано в случае с XA/21. Классическим примером опасности такого рода ошибок является случай с программой Therac-25, предназначенной для управления аппаратом лучевой терапии. Возникновение конфликта между управляющей программой и обработчиком клавиатуры приводило к тому, что пациенты могли получить облучение электронами при том, что датчики сообщали о нулевой дозе. Считается, что результатом этой ошибки стала смерть как минимум четырех человек.