☢️ Представьте себе машину, которая должна спасать жизни, превращаясь в смертельное оружие из-за нескольких строк кода. Therac-25 — это не просто история об ошибке; это монументальный урок о том, как самоуверенность инженеров и отсутствие культуры безопасности могут превратить сложный медицинский прибор в гильотину. В основе системы лежал мини-компьютер PDP-11, и, в отличие от предшественников, здесь разработчики решили доверить защиту пациента не физическим блокировкам, а «умному» программному обеспечению.
🧩 В основе проблемы лежало классическое состояние гонки (race condition). Программа написана на языке ассемблера, где параллельные процессы боролись за общие ресурсы памяти. Если оператор успевал ввести команды быстрее, чем система успевала завершить проверку состояния «поворотного стола», происходил фатальный сбой. Фактически, программное обеспечение не могло гарантировать, что вольфрамовая мишень находится на месте, когда включался мощный электронный пучок.
⚡️ Представьте разницу: для терапии электронами пучок требует низкой интенсивности, а для X-ray — огромной, в 100 раз выше. Ошибка позволяла включить режим высокой интенсивности без мишени, направляя поток бета-частиц прямо в ткани пациента. Жертвы описывали это как «удар раскаленным металлом» или «ощущение удара током». Это было не просто облучение — это была моментальная термическая и биологическая деструкция тканей на глубине.
💻 Инженеры AECL попали в ловушку «переиспользования кода». Они взяли модули от предыдущих систем, где были аппаратные предохранители, и просто удалили их, полагаясь на «надежность» софта. Но софт — это не кирпичи; он не имеет физических пределов прочности. Отсутствие должной верификации и тестирования привело к тому, что системные ошибки типа «Malfunction 54» стали для врачей не сигналом опасности, а «надоедливым багом», который операторы привыкли просто сбрасывать кнопкой «P» (Proceed).
⚖️ Самое жуткое в этой истории — не сам баг, а реакция компании. Когда врачи сообщали о «странных ожогах», AECL отвечала: «Это невозможно, система идеальна». Они буквально игнорировали реальность, предпочитая верить в безупречность своих алгоритмов. Доверие к «умному» софту стало своего рода религией, заменившей здравый смысл и инженерную осторожность.
🧬 Последствия были ужасающими. Пациенты получали дозы до 25,000 рад (при терапевтических нормах в 200 рад), что несовместимо с жизнью. Мы говорим о системном коллапсе: от плохой эргономики интерфейса до отсутствия записи логов, которые могли бы помочь восстановить картину до того, как пострадал шестой человек.
🧠 Урок, который мы выносим из этой трагедии: в критических системах софт никогда не должен быть единственной линией обороны. Инженерная гордыня — самый опасный баг. Любая система управления должна строиться на принципе «глубокой эшелонированной обороны» (defense in depth), где физические блокировки дублируют программные проверки, а сложность системы не превышает возможности её полноценного тестирования. Никогда не доверяйте коду больше, чем законам физики.