История, конечно, не новая, но на мой взгляд полезно узнать каждому.
Типичная разовая терапевтическая доза радиации составляет до 200 рад.
Рассмотрим случай, когда поэтапное, но не согласованное внедрение улучшений софта привело к системной ошибке. К худшей в истории программной ошибке.
В Therac-25 аппаратная защита была убрана и функции безопасности были возложены на программное обеспечение.
Therac-25 — аппарат лучевой терапии, медицинский ускоритель созданный канадской государственной организацией Atomic Energy of Canada Limited.
С июня 1985 года по январь 1987 года этот аппарат стал причиной шести передозировок радиации, некоторые пациенты получили дозы в десятки тысяч рад. Как минимум двое умерли непосредственно от передозировок.
"Медсестра вспомнила, что в тот день она заменяла "x" на "e". Выяснилось, что, если сделать это достаточно быстро, переоблучение случалось практически со 100-процентной вероятностью."
Сотрудникам больниц нравилось, что компьютер настраивает всё быстрее, чем человек. Чем меньше времени уходило на настройку, тем больше пациентов можно было принять за день.
Когда пришло время сделать Therac-25, AECL решили оставить только компьютерное управление. Они отказались от устройств ручного управления и от аппаратных механизмов блокировки. Компьютер должен был следить за настройками устройства и, в случае обнаружения неполадок, должен был отключать питание всей машины.
Ну ну.
В программном обеспечении Therac-25 были найдены как минимум четыре ошибки, которые могли привести к переоблучению.
- Одна и та же переменная применялась как для анализа введённых чисел, так и для определения положения поворотного круга. Поэтому при быстром вводе данных через терминал Therac-25 мог иметь дело с неправильным положением поворотного круга (состояние гонки).
- Настройка положения отклоняющих магнитов занимает около 8 секунд. Если за это время параметры типа и мощности излучения были изменены, а курсор установлен на финальную позицию, то система не обнаруживала изменений.
- Деление на величину излучения, приводящее в некоторых случаях к ошибке деления на ноль и к соответствующему увеличению величины облучения до максимально возможной.
- Установка булевской переменной (однобайтовой) в значение "истина" производилось командой "x=x+1". Поэтому с вероятностью 1/256 при нажатии кнопки "Set" программа могла пропустить информацию о некорректном положении диска.
- Были выявлены потенциальные ошибки — в многозадачной операционной системе не было никакой синхронизации.
Тонкости расследования и последствий уже не так впечатляют, так что на JoyReactor им не место.
...а вот ссылочку на полную версию честно стыренного мной контента оставлю.
Оригинал статьи Алексея Стаценко
Я смотрю законы робототехники уже вышли из чата
Чую в последующих обновах Gemini уже начнет формировать базу для терминаторов.