Tod durch Softwarefehler

Durch fehlerhafte Software in der Firmware von Toyota ist mindestens eine Person gestorben:

formatting link
(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
Reply to
Frank Buss
Loading thread data ...

RAM mit ECC verwenden? Die Erkennung passiert in Hardware, ebenso die Korrektur von Einzelbitfehlern.

Problem ist eher, daß die meisten Controller das nicht können weils eben billig sein muss.

Single-Bit-Fehler sind bei Verwendung von ECC-RAM problemlos korrigierbar. Kippen zwei Bits in einem Wort geht das nicht mehr so einfach, aber wenn es wirklich kritisch ist, dann muss man eben den Aufwand treiben...

Gerrit

Reply to
Gerrit Heitsch

Stimmt, ECC-RAM wäre eine gute Idee, dann kann man sogar Mehrbitfehler detektieren. Bleibt dann aber noch die Frage, was die Software machen soll, wenn so ein Fehler erkannt wurde.

--
Frank Buss, http://www.frank-buss.de 
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Frank Buss schrieb:

Stand doch in dem Artikel sogar drin: kritische Variablen mehrfach spiegeln. Und natürlich beim Lesezugriff vergleichen.

Marc

Reply to
Marc Santhoff

Notprogramm starten. Hat jedes Auto schon jetzt und erlaubt auch noch das Fahren, aber mit stark reduzierter Leistung und ohne die meisten Features wie ABS, ESP... Sowas kann man vom Code her ziemlich klein halten.

Beispiel war ein Klemmer im verstellbaren Turbolader meines letzten Autos. Damit wird der Ladedruck zu hoch. Das Steuergerät schaltet dann alles auf Minimum. Du meinst dann es wurde der halbe Motor ausgebaut so mies fährt sich die Kiste.

Gerrit

Reply to
Gerrit Heitsch

Joerg schrieb:

formatting link

Marc

Reply to
Marc Santhoff

Ja, das hatte ich auch gelesen und würde wohl die Wahrscheinlichkeit von einzelne Bitfehlern im RAM reduzieren, wenn der Programmierer alle kritischen Stellen beachtet und wenn man Glück hat und der Bitfehler nicht im Stack auftritt, oder im Flash im Programmcode.

Ich denke das beste wäre wohl, wenn sowohl Flash, als auch RAM per ECC abgesichtert wäre und beim einem Fehler dort dann von der Hardware per Exception eine Notfallroutine aufgerufen wird, ggf. in einem extra gesicherten Flash. Oder redundant aufbauen, mit Hardware Mehrheitsentscheidung, wie Jörg schrieb. Bei einem Auto für 10k Euro sollte doch eigentlich eine dreifache Ausführung eines 3 Euro Microcontrollers, und 2 Euro für ein kleines CPLD, kein Problem sein.

--
Frank Buss, http://www.frank-buss.de 
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

formatting link

Zitat "Damit ist die Zielgruppe, auf welche sich der Standard bezieht, recht klar definiert: der Mensch als Software-Entwickler"

Das ist wohl ziemlich daneben. Es kommt nicht ein einziges Mal das Wort "Ausfall" vor. Klar ist der Mensch ein haeufiger Verursacher, aber ein Standard fuer Computerei in Verkehrsmitteln muss auch den Ausfall von Hardware sowie Unfaelle beruecksichtigen. Bei meinen Projekten z.B. schonmal das Verhalten bei und nach nicht ganz knitterfreien Landungen.

--
Gruesse, Joerg 

http://www.analogconsultants.com/
Reply to
Joerg

Am 28.10.2013 16:50, schrieb Frank Buss:

Och, such mal nach Softwarefehler Ariane 5 oder Patriot System...

Reply to
Eric Brücklmeier

Any landing you can walk away from is a good one!

Gerrit

Reply to
Gerrit Heitsch

Aber nur bis der Schadensregulierer von der Versicherung kommt, und die Leute von der Flugaufsichtsbehoerde, und Cheffe einen Tobsuchtsanfall bekommt. Wie war das bei Heinz Ruehmann? "Och, nu ja, die Landung hat geklappt. Nur beim Motor, da ist, aehm, ja, also, da is'n Stueck abgebrochen. Und am Propeller auch. Und ... ".

--
Gruesse, Joerg 

http://www.analogconsultants.com/
Reply to
Joerg

Exakt da liegt das Problem. Bei einem 10k Auto wird selbst mit 10 Cents geknausert. Einige Euros mehr sind selbst bei einer Luxuskarosse undenkbar. Das schlimmere ist jedoch, dass sie auch bei den NRE knausern und deshalb sowie wegen zu eng gesetzter Arbeitsplaene und Messetermine Entwicklungen freigeben, die noch gar nicht richtig ausgegoren sind.

--
Gruesse, Joerg 

http://www.analogconsultants.com/
Reply to
Joerg

Nicht wirklich.

Als erstes mußt du sie erstmal zuverlässig erkennen. OK, Ein-Bit-Fehler sind leicht zu erkennen. Aber was, wenn nun ausgerechnet in der Parity-Einheit ein Bit kippt?

Hier deutet sich schon im Kleinen an, was auch für große Systeme gilt.

Das ist das eigentliche Problem. Save recovery aus jeder denkbaren Situation potenziert die Komplexität der Software und damit wiederum die Zahl der denkbaren Situationen. Eine nette unendliche exponentielle Rekursion.

Der einzige realistische Ausweg ist deswegen die Vollbremsung mit automatischem Neustart.

Reply to
Heiko Nocon

Dann wird ein Fehler erkannt, der keiner ist. Besser als einen Fehler übersehen.

Ansonsten ist ECC-RAM bei Servern Standard und sollte es eigentlich auch bei PCs sein. Wer schon einmal Stunden mit einem instabilen System verbracht hat (memtest86+ findet nicht alles), der zahlt die paar Euro extra für ECC-RAM mit Freuden.

Nein, das Laden eines Notprogrammes welches möglichst wenige Resourcen benutzt und das System möglichst schonend in einen sicheren Zustand (beim Auto: angehalten, Motor aus, in dieser Reihenfolge) überführt ohne dabei den Fahrer oder andere Verkehrsteilnehmer zu gefährden. Damit fällt die Vollbremsung schonmal aus.

Gerrit

Reply to
Gerrit Heitsch

Am 28.10.2013 17:49, schrieb Gerrit Heitsch:

Eine gute Landung ist eine, bei der das Flugzeug in einem Stück bleibt. Eine hervorragende Landung ist eine, nach der das Flugzeug noch einmal verwendet werden kann.

Bernd

--
Meine Glaskugel ist mir leider unvorhersehbarerweise vom Balkon gefallen. 
P.Liedermann in defa
Reply to
Bernd Laengerich

Was ist dann eine Landung nach der das Flugzeug direkt aus eigener Kraft wieder starten kann?

Gerrit

Reply to
Gerrit Heitsch

Am 28.10.2013 18:26, schrieb Gerrit Heitsch:

Ist solch ein Vorkommen überliefert? Fällt ansonsten unter den zweiten Punkt :-)

Bernd

--
Meine Glaskugel ist mir leider unvorhersehbarerweise vom Balkon gefallen. 
P.Liedermann in defa
Reply to
Bernd Laengerich

Ja, hier schon selbst gesehen:

formatting link

Landebahn mitten im Dschungel, rundrum nur Wald. Dort mit einer 727 (kurze Version) gelandet, ausgestiegen und die gleich wieder weiter, ohne auftanken (wie auch?).

Gerrit

Reply to
Gerrit Heitsch

Auch hier muß es klappen:

formatting link

sogar mit sehr fettem Gerät (IL-76) - allerdings mit Auftanken...

Reply to
Eric Brücklmeier

[snip]

Bevor wir uns hier in wilde Diskussionen Bit-Flips u.a. vertiefen:

Mir ist nach dem was ich gelesen habe nicht klar, ob es sich bei den Aussagen der Experten um *moegliche* Fehlerszenarioes (also letztendlich Spekulation) oder *tatsaechlich* nachgewiesenes Versagen handelt.

Der NASA-Bericht spekuliert ja auch darueber, dass Tin-Whisker am Potentiometer eine Fehlerquelle sein koennten, wohlweisslich ohne zu sagen, dass das die Ursache war.

Rein technich halte ich es fuer interessant zu diskutieren ob so ein System wirklich ein mission-critical ist wie z.B. bei einem Flugzeug. Man sollte doch annehmen koennen, dass eine Vollgassituation vom Fahrer kontrollierbar ist - z.B. durch auskupplen/N-waehlen, Zuendung abschalten oder bremsen (alos letztlich 3 redundante Overrides)

Wenn man sagt, dass das mission-critical ist, warum war es dan jahrzehntelang OK die Rueckstellung von Drosselklappen durch *eine* Feder zu gewaehrleisten. Die Feder konnte brechen, wenn man zum Beispiel das Gaspedal durchtrat und blieb dann im Vollgasstellung stehen (selbst erlebt).

gruebelt Klaus

Reply to
Klaus Bahner

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.