Смертельная ошибка в ПО аппарата Therac-25: как 40 лет назад программный баг унёс жизни пациентов
Программные ошибки обычно доставляют неудобства и отнимают время, но редко приводят к смертельным исходам. Однако в 1985 году аппарат для лучевой терапии Therac-25 начал свою печально известную серию инцидентов. Ошибка в его программном обеспечении вызывала опасное состояние гонки (race condition), в результате чего как минимум шесть пациентов получили дозы радиации, в 100 раз превышающие норму. Трое из них скончались.
Therac-25 казался медицинским учреждениям привлекательным аппаратом благодаря революционным двойным режимам лечения в одном компактном устройстве. Он мог использоваться для электронной лучевой терапии поверхностных тканей (например, при раке кожи) и для мегавольтной рентгенотерапии глубоко расположенных опухолей. Перепутать эти режимы было смертельно опасно.
Переход на программное управление
Одной из инноваций Therac-25 стал переход исключительно на программное управление. Более ранние модели имели электромеханические аппаратные блокировки, предотвращавшие радиационные аварии. Например, Therac-20, как утверждается, имел те же программные ошибки, что и Therac-25, но аппаратное обеспечение блокировало небезопасные условия работы даже при сбое ПО.
В статье магистра компьютерных наук Калифорнийского политехнического университета Энн Мари Поррелло подробно описывается природа ошибки и произошедшие инциденты. Для проявления этого смертельного бага оператор Therac-25 обычно ошибался в выборе режима работы и быстро пытался исправить ошибку. Опытный оператор мог редактировать параметры лечения так быстро, что программное обеспечение пропускало проверку безопасности из-за «состояния гонки» между обработчиком ввода и логикой управления лучом.
Ключевым моментом было то, что Therac-25 требовалось около 8 секунд для смены режима излучения, и быстрые действия оператора в этом временном окне могли вызвать путаницу в программном обеспечении.
Дата аварии | Место аварии | Характер травм пациента | Месяцев после первой аварии |
3 июня 1985 | Мариетта, Джорджия | Удаление груди, потеря функции руки | Строка 1 - Ячейка 3 |
26 июля 1985 | Онтарио, Канада | Потребовалась полная замена тазобедренного сустава | 1 |
6 января 1986 | Якима, Вашингтон | Незначительная инвалидность и рубцы | 7 |
21 марта 1986 | Тайлер, Техас | Смерть | 9 |
11 апреля 1986 | Тайлер, Техас | Смерть | 10 |
17 января 1987 | Якима, Вашингтон | Смерть | 19 |
Первый задокументированный инцидент произошел в июне 1985 года, последний — в январе 1987 года. Производитель Therac-25, компания AECL, месяцами отрицала свою вину и начала тщательное расследование только весной 1986 года. К тому времени к расследованию подключилось FDA (Управление по санитарному надзору за качеством пищевых продуктов и медикаментов США).
После череды смертельных случаев, связанных с Therac-25, появились призывы к формальной верификации, тщательному тестированию и улучшению документации для всего медицинского программного обеспечения. Проблемы Therac-25 стали поучительной историей, которую часто изучают в курсах компьютерных наук.
Источник: Tomshardware.com
0 комментариев