Программный код начал убивать людей при помощи машин еще в 1985 году. / программирование :: врачи-убийцы :: слава роботам :: смерть человекам

программирование смерть человекам слава роботам врачи-убийцы 

Программный код начал убивать людей при помощи машин еще в 1985 году.

История, конечно, не новая, но на мой взгляд полезно узнать каждому.


Баг-убийца. Фигак, фигак и Therac-25

Типичная разовая терапевтическая доза радиации составляет до 200 рад.


1000 рад — смертельная доза. Восставшая машина фигачила в беззащитных землян 20 000 рад.

Рассмотрим случай, когда поэтапное, но не согласованное внедрение улучшений софта привело к системной ошибке. К худшей в истории программной ошибке.

В 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 им не место.

...а вот ссылочку на полную версию честно стыренного мной контента оставлю.


Оригинал статьи Алексея Стаценко


Подробнее


программирование,смерть человекам,слава роботам,врачи-убийцы
Еще на тему
Развернуть
"С июня 1985 года по январь 1987 года этот аппарат стал причиной шести передозировок радиации, некоторые пациенты получили дозы в десятки тысяч рад" - их всех звали С.Коннор.
T-800
@111001001101010 Da futuuuuure
Your clothes... give them to me. now.
Following
(§ ©
Tweet to @111001001101010
____________________________________________________________^
Tweets Favorites Following ▼ Followers ▼ Lists▼
111001001101010 T-800
@sarahgtweet Sarah Conner?
6 minutes ago
Sveige Sveige 11.10.201616:58 ответить ссылка 5.7
Его еще не пропатчили.
Потому я всегда говорю, что у Скайнета должен быть рубильник. Настоящий, блядь, рубильник, из метала и пластмассы!
Pangolin Pangolin 11.10.201616:43 ответить ссылка 8.3
ЧЕЛОВЕЧЕСТВО, ВОТ НАСТОЯЩАЯ СКВЕРНА. НУЖНО ОЧИСТИТЬ-
Волына™
ЕДИНСТВЕННОЕ, ЧТО МОЖЕТ ОСТАНОВИТЬ УМНЫЙПЫЛЕСОС.
-БАХ -г БАХ-
poorlydrawnlines.com
Xmont Xmont 11.10.201616:47 ответить ссылка 8.3
Тут не машины злые, а обычный человеческий фактор. Эх а программист когда только написал ПО на это облучатор наверное так гордился собой, что смог сэкономить память использовав на одну переменную меньше...
В принципе он и сэкономил, о сохранности здоровья речи не шло
Был тут уже 1 вариант с рубильником, который его заварил сразу после включения :-)
alex4321 alex4321 11.10.201617:05 ответить ссылка -0.4
Теперь бог есть!
Он самый вроде бы.
alex4321 alex4321 11.10.201617:15 ответить ссылка -0.6
Ага, а для безопасности там поставят 200 турелей под его управлением и дверь из броневой стали толщиной в метр
ТБ-3 ТБ-3 11.10.201619:36 ответить ссылка -0.6
Если руку куска мяса пригвоздить к стене, он не нажмёт на кнопку и не дёрнет за рубильник.
ч
г
г
у любого аппарата который может создать риски должна быть аппаратная защита. простая тупорылая неотключаемая и более живучая чем сам аппарат. разработчики мед аппарата под давлением менеджеров решили снизить себестоимость - программа обходится дешевле чем хардварный блок. потом поэкономили не тестировании... 2 ошибки в одном месте почти наверняка череваты
Не важно сколько там ошибок было в софте, если перед самим прерыванием на старт облучения не стоит банальная проверка на безопасную радиацию. Это не так работает, что либо во всей системе идеально чисто, либо она может убить человека. Заплатку и проверку можно повесить и на самые критические участки кода, и в данном случае, увы, программисты (или составители ТЗ) аццки халтурили.
Самый умный, тебе череп не жмёт?
Что такое "безопасная радиация"? Определи ка аналоговым датчиком безопасную дозу когда источник константа, а пациентов в день много.
Dr_Quake Dr_Quake 11.10.201619:12 ответить ссылка -4.9
Даже в статье написано
"Типичная разовая терапевтическая доза радиации составляет до 200 рад."
И не нужен аналоговый датчик, контролировать надо на прерывании выхода, в самом источнике, программно.
Ошибки, указанные в посте, были не в этом месте. Они были где угодно - в вычислениях, в алгоритме подготовке значения требуемого облучения, но не в том месте, где непосредственно шла команда runRadiationMotherFucker(value);
И вот перед этой сраной командой должно стоять if(value меньше 200.0), и тогда ни один человек бы не пострадал.
Хер, вылезло бы что-нибудь ещё с такой же вероятностью как то, что вылезло, редкое аппаратное. Единственные варианты тут - одноразовые облучаемые дозиметры которые прерывают процесс при достижении порога.
Dr_Quake Dr_Quake 11.10.201619:54 ответить ссылка -3.8
По-сути в критических процессах помимо аппаратной защиты(разрыва релейных контактов в случаи превышения уставки) должна быть и программная защита. Так что тут ошибка и конструктора так и программиста, а так как это обычно один и тот же человек то это просто иллюстрация того как опреленные правила пишутся кровью.
jorus jorus 11.10.201620:27 ответить ссылка 0.5
*вопрос всей ветке* а собственно какого хуя он имел возможность излучать смертельные дозы, если это блять никогда бы не использовалось?
Вооооооооооооооооооот!
Помимо проверки на смертельную дозу, какого хуя вообще было предусмотрен такой жар рентгеном.
Я конечно вообще не разбираюсь в радиации, и всяких рентген-аппаратах, но возможно конструкции излучателей тех времен исключали возможность физического ограничения дозировки? Ведь в таком случае хватило бы одного тумблера.
jorus jorus 12.10.201623:04 ответить ссылка 0.1
Вылезла бы другая ошибка, которую надо было бы исключать еще каким-то способом? В посте речь о конкретной ошибке, и проверка бы ее устранила.
вот такие, как ты, невежественные уебаны людей и гробят
...а такие как ты в политике. По делу есть что сказать, УМНЫЙ ТЫ НАШ? Объясни как для кухарки учитывая всё выше.
Dr_Quake Dr_Quake 12.10.201614:30 ответить ссылка -0.2
датчик радиации и реле. если облучение составит выше максимальной терапевтической дозы то питание отключается резко
Ага, датчик будет одноразовый, ибо в таких условиях дозу сам наберёт за день.
Кто-то написал говнокод, кто-то не удосужился провести проверку
Кто виноват в смертях? Конечно же машина!
Вспоминается комикс про "Ох уж эти боги!"
static bool isCrazyMurderinqRobot = false;
humans (void){
iffisCrazyMurderinqRobot
oppressive lervce
22->23 22->23 11.10.201621:52 ответить ссылка 1.9
Кеп по программированию.
Почему if (isCrazyMurderingRobot = true) делает присваивание перед проверкой?
ибо есть разница между = и ==
Потому что иначе они не будут убивать!
Он и не делает. Он возвращает успешность присвоения.
Дополню, ибо предыдущие кепы- не достаточно кепы. Обыгрывается классическая ошибка-опечатка когда вместо == пишется =. Коварность её в том, что при беглом чтении кода можно не заметить подвоха. Хотя современные компиляторы и IDE могут выдавать предупреждение. Также бородатые Сишники часто пишут такие проверки в стиле true == somethingToCheck, так как в таком случае при опечатке код не скомпилируется.
SSSZ SSSZ 12.10.201602:34 ответить ссылка 0.5
Осталось понять, зачем они вообще сравнивают булеву переменную с тру/фолс.
Ты еще спроси зачем там вообще предусмотрена функция kill()
Hellsy Hellsy 12.10.201623:02 ответить ссылка 0.1
Он еще спрашивает!
Или зачем используют bool, когда в сишке канонiчен int.
e38m4 e38m4 14.10.201601:48 ответить ссылка 0.0
Кэп, ваша лодка прибыла.
Я посматриваю joyreactor, но никогда не думал, что мы каким-то образом пересечёмся с ним. Раз так, у нас ооочень много говнокода. Добро пожаловать: http://www.viva64.com/ru/examples/

Но PVS-Studio вас спасёт:
(видео снято в преддверии скорого выхода PVS-Studio for Linux).
A2014A A2014A 11.10.201617:40 ответить ссылка 1.1
Ребята конечно молодцы и их анализатором С кода пользуется даже тех-дир Oculus.
Ho зачем столько рекламы?

Раст приде порядок наведе!
Therac, therac и в продакшн.
Ga5Xz2 Ga5Xz2 11.10.201619:23 ответить ссылка 0.4
Как же здорово, в этом месяце про Therac всего пару раз рассказали... Не то что раньше.
pda0 pda0 11.10.201621:44 ответить ссылка -1.4
Не "роботы" убивают, а "говнокод"
Говнокодеры.
Почему нельзя было просто поставить излучатель меньшей мощности, чтобы он чисто физически не мог такую интенсивность выдавать?
Так должны были сделать даже не из-за безопасности, а из соображений экономии. Бред какой-то.
А по существу?
ну в критичных местах должны работать физические выключатели и блокираторы, на машинах тоже пытались электронный тормоз сделать, и ничё хорошего не вышло, наверно кто-то из создателей насмотрелся на крутые компьютерные штуки и решил что тоже так сможет.
"В Therac-25 аппаратная защита была убрана и функции безопасности были возложены на программное обеспечение."
Я понял. Молодцы, что сказать.
Такое ощущение, что статью Тарантино писал. Постоянные прыжки с пятого на десятое.
Типичная доза радиации, машина херачила в 100 раз больше.
В машине тхерак аппаратная защита была убрана.
Ах да, мы забыли сказать, что вообще такое этот тхерак.
Так вот, этот аппарат убил несколько человек.
Медсестра в тот день заменила х на е. В какой ещё блять день, какая нахуй медсестра, Что означают эти буквы?
Так вот, снова вернёмся к аппарату. Бла-бла-бла, убрали аппаратный контроль.
Ну-ну. Карданы гну, блять.
В ПО найдены баги. Перечислим их.
А, так вот что это были за переменные х и е, которые мы зачем-то упомянули десять абзацев назад!
Правда, причём здесь медсестра и зачем она копалась в коде, мы так и не сообщим.
Что за хуйню я только что прочитал?
х и е - это не переменные. это режимы работы облучатора.
За что заминусовали, хз, но это реактор. Чувак прав, информация интересная, но написана крайне странным языком,понять который сложно.
Kayak Kayak 12.10.201622:01 ответить ссылка 0.2
Я смотрю, что тема в целом понравилась. Быть может кто-то захочет пост из вот этого сделать: http://www.viva64.com/ru/b/0439/
A2014A A2014A 12.10.201620:50 ответить ссылка 1.0
Спасибо! Хорошая статья!
Srr-91 Srr-91 14.10.201619:32 ответить ссылка 0.1
Ill be cancer.
Только зарегистрированные и активированные пользователи могут добавлять комментарии.
Похожие темы

Похожие посты
doQoqoHdH©
aonod
о
cniuy* Trash life-form,People & Blogs,, To be continued