Therac-25: Το λογισμικό που έδινε θανατηφόρες δόσεις ακτινοβολίας και άλλαξε τον τρόπο που ελέγχουμε ιατρικές μηχανές [BINTEO]

User avatar placeholder
Written by NewsOk Team

14 Οκτωβρίου 2026

Ένας ασθενής ξαπλώνει στο τραπέζι της ακτινοθεραπείας, ο τεχνικός πληκτρολογεί τη συνταγή, πατά το κουμπί και η μηχανή εμφανίζει ένα μήνυμα με έναν αριθμό σφάλματος. Συνεχίζει, όπως είχε μάθει. Στη δεκαετία του 1980 αυτό το σενάριο επαναλήφθηκε αρκετές φορές με το Therac-25, και οι συνέπειες ήταν από τις χειρότερες που έχουν καταγραφεί από ιατρικό εξοπλισμό. Η περίπτωση παραμένει μάθημα για κάθε μηχανικό λογισμικού.

Μια μηχανή χωρίς δεύτερη γραμμή άμυνας

Το Therac-25 κατασκευάστηκε από την Atomic Energy of Canada Limited (AECL), κρατική καναδική εταιρεία, και κυκλοφόρησε στα τέλη του 1982. Ήταν γραμμικός επιταχυντής, δηλαδή μηχανή που παράγει δέσμη ηλεκτρονίων ή ακτίνες Χ για την αντιμετώπιση του καρκίνου. Εγκαταστάθηκαν έντεκα μονάδες, πέντε στις ΗΠΑ και έξι στον Καναδά.

Οι προηγούμενες εκδόσεις είχαν μηχανικούς ασφαλειοδιακόπτες (hardware interlocks). Στο Therac-25 η ασφάλεια εξαρτιόταν σε μεγάλο βαθμό από το λογισμικό, και μάλιστα από κώδικα που προερχόταν από παλαιότερα μοντέλα. Στις παλιές μηχανές, τα σφάλματα του κώδικα συγκαλύπτονταν από τους μηχανικούς διακόπτες. Όταν αυτοί αφαιρέθηκαν, τα σφάλματα έγιναν ορατά με τον χειρότερο τρόπο.

Έξι περιστατικά σε δύο χρόνια

Σύμφωνα με την έρευνα των Νάνσι Λέβεσον και Κλαρκ Τέρνερ, που δημοσιεύτηκε στο IEEE Computer το 1993, έγιναν έξι γνωστές υπερδοσολογίες από τον Ιούνιο του 1985 έως τον Ιανουάριο του 1987. Συνέβησαν στο Μάριετα της Τζόρτζια, στο Χάμιλτον του Οντάριο, στο Γιακίμα της Ουάσινγκτον και, δύο φορές, στο Τάιλερ του Τέξας.

Μια τυπική δόση σε μία συνεδρία είναι περίπου 200 rad. Για το πρώτο περιστατικό, στο Μάριετα, οι εκτιμήσεις της φυσικού του νοσοκομείου μιλούν για 15.000 έως 20.000 rad. Η ασθενής ένιωσε έντονη θερμότητα και είπε στον τεχνικό ότι την «έκαψε». Της αφαιρέθηκε ο μαστός και έχασε τη χρήση του ώμου και του χεριού. Ο αριθμός των θανάτων που αποδίδονται στα περιστατικά δεν είναι ενιαίος στις πηγές, γιατί σε μία περίπτωση η νεκροψία ανέφερε ως αιτία θανάτου τον ίδιο τον καρκίνο. Οι ερευνητές μιλούν πάντως για θανάτους και σοβαρούς τραυματισμούς.

Τι πήγε στραβά στον κώδικα

Στο Τάιλερ, ο φυσικός του κέντρου, Φριτς Χέιγκερ, κατάφερε να αναπαράγει το σφάλμα. Αν ο χειριστής πληκτρολογούσε γρήγορα τη λειτουργία της μηχανής και μετά διόρθωνε την εισαγωγή μέσα σε περίπου οκτώ δευτερόλεπτα, το λογισμικό δεν κατέγραφε την αλλαγή. Η μηχανή έμενε σε λάθος ρύθμιση, χωρίς τον στόχο που μετριάζει τη δέσμη στη θέση του. Είναι τύπος σφάλματος που οι προγραμματιστές ονομάζουν συνθήκη ανταγωνισμού (race condition).

Το περιστατικό του 1987 στο Γιακίμα είχε άλλη αιτία. Μια μεταβλητή του ενός byte αυξανόταν κατά ένα σε κάθε έλεγχο αντί να παίρνει σταθερή τιμή. Κάθε 256η φορά γύριζε στο μηδέν και ο έλεγχος θέσης του κολλιματέρ παρακάμπτονταν.

Οι ενδείξεις προς τον χειριστή ήταν φτωχές. Η οθόνη έδειχνε τη λέξη «MALFUNCTION» και έναν αριθμό από το 1 έως το 64, που το εγχειρίδιο δεν εξηγούσε. Επειδή ορισμένα σφάλματα απλώς σταματούσαν προσωρινά τη μηχανή, οι χειριστές συνήθισαν να πατούν «συνέχεια».

Η αντίδραση και το μάθημα

Η AECL δεν κατάφερε αρχικά να αναπαράγει τα σφάλματα και υποπτεύθηκε βλάβη σε μικροδιακόπτη. Υποστήριξε ότι οι αλλαγές βελτίωσαν την ασφάλεια κατά πέντε τάξεις μεγέθους, ισχυρισμό που οι Λέβεσον και Τέρνερ θεωρούν υπερβολικό. Το λογισμικό δεν είχε περάσει ανεξάρτητο έλεγχο, δεν υπήρχε ενιαίο σχέδιο δοκιμών, και οι χρήστες ενημερώνονταν ότι οι υπερδοσολογίες ήταν αδύνατες.

Το συμπέρασμα των ερευνητών δεν είναι ότι φταίει ένας κακός προγραμματιστής. Οι υπερδοσολογίες οφείλονταν κυρίως σε σφάλματα του λογισμικού και στο ότι ο κατασκευαστής δεν ακολούθησε σωστές πρακτικές μηχανικής λογισμικού, με υπερβολική εμπιστοσύνη ότι ο κώδικας εξασφαλίζει την ασφάλεια. Από τότε, η ιστορία του Therac-25 διδάσκεται σε μαθήματα μηχανικής και συνδέεται με την ανάπτυξη προτύπων για το λογισμικό ιατρικών συσκευών.