F
Frank Buss
Guest
Durch fehlerhafte Software in der Firmware von Toyota ist mindestens
eine Person gestorben:
http://www.eetimes.com/document.asp?doc_id=1319903
(Cookies ausschalten, wenn man alle drei Seiten ohne Anmeldung lesen will)
Ich habe zwar nicht den 800-Seiten Bericht gelesen (falls der überhaupt
öffentlich zugänglich ist), aber der Titel des Artikels ist etwas
missverständlich, da ich es für unwahrscheinlich halte, daß der Unfall
durch einen Bit-Flip zustande kam, sondern eher weil in der Software
tatsächlich Stack Overflow und Race-Condition Fehler waren.
Wie kann man Stack Overflow Fehler bei so kritische Software übersehen?
In jeder besseren IDE, z.B. die CodeWarrior Reihe, bekommt man eine
automatisch generierte Analyse des Call-Trees angezeigt, mit Ausnutzung
des Stacks (kann der GCC glaube ich auch mit Zusatzprogrammen, die die
Intermediate-XML-Dateien auswerten). Auch wenn da viele Threads parallel
liefen, war deren Anzahl endlich und wahrscheinlich auch nur einmal beim
Programmstart gestartet, sodaß man jeden Thread einfach addieren könnte.
Race-Conditions sind natürlich schwieriger zu finden, aber durch
sorgfältige Programmierung und Analyse der Locks auch vermeidbar.
Eine andere Frage: wie kann man ein Programm gegen Bit-Flips absichern?
Man müsste ja alle möglichen Auswirkungen von Bit-Flips (auch im Flash)
untersuchen. Und was macht man, wenn man ein Bit-Flip detektiert? Auf
der Autobahn eine Vollbremsung einleiten wäre wohl nicht so gut.
--
Frank Buss, http://www.frank-buss.de
electronics and more: http://www.youtube.com/user/frankbuss
eine Person gestorben:
http://www.eetimes.com/document.asp?doc_id=1319903
(Cookies ausschalten, wenn man alle drei Seiten ohne Anmeldung lesen will)
Ich habe zwar nicht den 800-Seiten Bericht gelesen (falls der überhaupt
öffentlich zugänglich ist), aber der Titel des Artikels ist etwas
missverständlich, da ich es für unwahrscheinlich halte, daß der Unfall
durch einen Bit-Flip zustande kam, sondern eher weil in der Software
tatsächlich Stack Overflow und Race-Condition Fehler waren.
Wie kann man Stack Overflow Fehler bei so kritische Software übersehen?
In jeder besseren IDE, z.B. die CodeWarrior Reihe, bekommt man eine
automatisch generierte Analyse des Call-Trees angezeigt, mit Ausnutzung
des Stacks (kann der GCC glaube ich auch mit Zusatzprogrammen, die die
Intermediate-XML-Dateien auswerten). Auch wenn da viele Threads parallel
liefen, war deren Anzahl endlich und wahrscheinlich auch nur einmal beim
Programmstart gestartet, sodaß man jeden Thread einfach addieren könnte.
Race-Conditions sind natürlich schwieriger zu finden, aber durch
sorgfältige Programmierung und Analyse der Locks auch vermeidbar.
Eine andere Frage: wie kann man ein Programm gegen Bit-Flips absichern?
Man müsste ja alle möglichen Auswirkungen von Bit-Flips (auch im Flash)
untersuchen. Und was macht man, wenn man ein Bit-Flip detektiert? Auf
der Autobahn eine Vollbremsung einleiten wäre wohl nicht so gut.
--
Frank Buss, http://www.frank-buss.de
electronics and more: http://www.youtube.com/user/frankbuss