باگ نرم‌افزاری و مرگ چند نفر

باگ نرم افزاری مرگبار و فراموش نشدنی Therac-25

چهل سال پیش، یک باگ نرم افزاری در دستگاه پرتودرمانی Therac-25 جان چندین انسان را گرفت. این فاجعه به یکی از مهم‌ترین و تراگیک‌ترین داستان‌های هولناک در تاریخ مهندسی نرم افزار تبدیل شد.

دستگاه Therac-25 در زمان خود یک نوآوری بزرگ محسوب می‌شد. توانایی آن در انجام دو نوع پرتودرمانی کاملاً متفاوت، یعنی پرتودرمانی با الکترون برای تومورهای سطحی و پرتودرمانی با اشعه ایکس قوی برای تومورهای عمیق، آن را به یک فناوری پیشرفته تبدیل کرده بود. اما بزرگ‌ترین نوآوری و درعین‌حال، پاشنه آشیل آن، حذف قفل‌های ایمنی سخت افزاری بود. در مدل‌های قدیمی‌تر، حتی اگر نرم افزاری دچار اشتباه می‌شد، مکانیسم‌های فیزیکی از فعال‌شدن پرتو خطرناک در شرایط ناامن جلوگیری می‌کردند. اما در Therac-25، کنترل‌ها全部 به نرم افزاری واگذار شده بود و این به معنی این بود که یک باگ کوچک می‌توانست فاجعه‌ای به‌بار آورد.

شرایط مسابقه: علت اصلی فاجعه Therac-25

به نقل از Tom’s Hardware، این فاجعه ناشی از یک نوع باگ نرم افزاری پیچیده به نام «شرایط مسابقه» (Race Condition) بود. این باگ فقط تحت شرایط خاصی فعال می‌شد و توسط اپراتورهای باتجربه و سریع. سناریوی مرگبار وقتی به‌وجود می‌آمد که اپراتور به نادرست حالت درمانی اشعه ایکس (حالت پرقدرت) را انتخاب می‌کرد. سپس، قبل از این که سیستم به‌طور کامل آماده بشود، اپراتور به شدت فهمید نادرست خود می‌شد و حالت را به پرتو الکترونی (حالت کم‌قوت) تبدیل می‌کرد.

از آنجایی که اپراتور زیاد سریع خطای خود را اصلاح می‌کرد، نرم افزار دچار سردرگمی می‌شد. در این حالت، قسمت کنترلر ورودی دستور تازه (حالت کم قوت) را ثبت می‌کرد، اما قسمت کنترلر پرتو تا این مدت در حال آماده سازی برای حالت پرقدرت قبلی بود. در نتیجه تداخل وقتی، دستگاه پرتو الکترونی پرقدرت را بدون فعال کردن سپر محافظ ملزوم، شلیک می‌کرد و دوز کشنده‌ای از تشعشع را مستقیماً به بیمار منتقل می‌کرد.

بین ژوئن ۱۹۸۵ تا ژانویه ۱۹۸۷، حداقل شش حادثه مستند از این نوع رقم خورد که تبدیل جراحات شدید و مرگ سه بیمار شد. در ابتدا، شرکت سازنده (AECL) هرگونه نقص در سیستم خود را تکذیب می‌کرد، اما با افزایش تعداد قربانیان و آغاز تحقیقات سازمان غذا و داروی آمریکا (FDA) سرانجام ناچار به پذیرفتن مسئولیت و بازبینی کامل سیستم خود شد.

آثار فاجعه Therac-25

از آن زمان تا بحال، فاجعه Therac-25 به یک نمونه کلاسیک در مطالعات علوم کامپیوتر و مهندسی نرم افزار تبدیل شده است. این حادثه بر اهمیت آزمایش‌های دقیق، مستند سازی کامل و وجود سیستم‌های ایمنی چندلایه (سخت افزاری و نرم افزاری) پافشاری می‌کند.