تقریباً ۴۰ سال پیش یک باگ نرمافزاری در دستگاه پرتودرمانی Therac-25 باعث مرگ حداقل سه بیمار شد.
چهل سال پیش یک باگ نرمافزاری در دستگاه پرتودرمانی Therac-25، جان چند انسان را گرفت. این نقص فنی باعث شد حداقل شش بیمار دوزهای پرتویی ۱۰۰ برابر قویتر از حد مجاز دریافت کنند و درنهایت حداقل سه نفر جان باختند. این فاجعه به یکی از مهمترین داستانهای هولناک در تاریخ مهندسی نرمافزار تبدیل شد.
دستگاه Therac-25 در زمان خود یک نوآوری بزرگ محسوب میشد. این دستگاه میتوانست دو نوع پرتودرمانی کاملاً متفاوت انجام دهد: یکی پرتودرمانی با الکترون برای تومورهای سطحی و دیگری پرتودرمانی با اشعه ایکس قدرتمند برای تومورهای عمیق. اما بزرگترین نوآوری و درعینحال، پاشنه آشیل آن، حذف قفلهای ایمنی سختافزاری بود. در مدلهای قدیمیتر مانند Therac-20، حتی اگر نرمافزار دچار خطا میشد، مکانیسمهای فیزیکی از فعالشدن پرتو خطرناک در شرایط ناامن جلوگیری میکردند. اما در Therac-25 تمام کنترلها به نرمافزار واگذار شده بود و این یعنی یک باگ کوچک میتوانست فاجعه به بار آورد.
به گزارش Tom's Hardware، این فاجعه ناشی از یک نوع باگ نرمافزاری پیچیده به نام «شرایط مسابقه» (Race Condition) بود. این باگ فقط تحت شرایطی خاص و توسط اپراتورهای باتجربه و سریع فعال میشد. سناریوی مرگبار زمانی بهوجود میآمد که اپراتور به اشتباه حالت درمانی اشعه ایکس (حالت پرقدرت) را انتخاب میکرد. سپس، قبل از اینکه سیستم بهطور کامل آماده شود، اپراتور به سرعت متوجه اشتباه خود میشد و حالت را به پرتو الکترونی (حالت کمقدرت) تغییر میداد.
از آنجایی که اپراتور بسیار سریع خطای خود را اصلاح میکرد، نرمافزار دچار سردرگمی میشد. در این حالت، بخش کنترلر ورودی دستور جدید (حالت کمقدرت) را ثبت میکرد، اما بخش کنترلر پرتو، هنوز درحال آمادهسازی برای حالت پرقدرت قبلی بود. در نتیجه این تداخل زمانی، دستگاه پرتو الکترونی پرقدرت را بدون فعالکردن سپر محافظ لازم، شلیک و دوز کشندهای از تشعشع را مستقیماً به بیمار منتقل میکرد.
بین ژوئن ۱۹۸۵ تا ژانویه ۱۹۸۷، حداقل شش حادثه مستند از این نوع رخ داد که منجر به جراحات شدید و مرگ سه بیمار شد. در ابتدا، شرکت سازنده (AECL) هرگونه نقص در سیستم خود را انکار میکرد، اما با افزایش تعداد قربانیان و شروع تحقیقات سازمان غذا و داروی آمریکا (FDA) سرانجام مجبور به پذیرش مسئولیت و بازبینی کامل سیستم خود شد.
تاریخ حادثه | مکان حادثه | شدت جراحات بیمار |
۳ ژوئن ۱۹۸۵ | ماریتا، جورجیا | برداشتن سینه، از کار افتادن بازو |
۲۶ ژوئیه ۱۹۸۵ | انتاریو، کانادا | نیاز به تعویض کامل مفصل ران |
۲۱ مارس ۱۹۸۶ | تایلر، تگزاس | مرگ |
۱۱ آوریل ۱۹۸۶ | تایلر، تگزاس | مرگ |
۱۷ ژانویه ۱۹۸۷ | یاکیما، واشنگتن | مرگ |
از آن زمان تاکنون، فاجعه Therac-25 به یک نمونه کلاسیک در مطالعات علوم کامپیوتر و مهندسی نرمافزار تبدیل شد. این حادثه بر اهمیت آزمایشهای دقیق، مستندسازی کامل و وجود سیستمهای ایمنی چندلایه (سختافزاری و نرمافزاری) تأکید میکند.
پاسخ ها