DE102019102299A1 - Verfahren und Vorrichtung zum automatisierten Erfassen von Fehlern in Computersystemen - Google Patents

Verfahren und Vorrichtung zum automatisierten Erfassen von Fehlern in Computersystemen Download PDF

Info

Publication number
DE102019102299A1
DE102019102299A1 DE102019102299.1A DE102019102299A DE102019102299A1 DE 102019102299 A1 DE102019102299 A1 DE 102019102299A1 DE 102019102299 A DE102019102299 A DE 102019102299A DE 102019102299 A1 DE102019102299 A1 DE 102019102299A1
Authority
DE
Germany
Prior art keywords
code
data
computer system
computer
comparison
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019102299.1A
Other languages
English (en)
Inventor
Andreas Kister
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ESG Elektroniksystem und Logistik GmbH
Original Assignee
ESG Elektroniksystem und Logistik GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ESG Elektroniksystem und Logistik GmbH filed Critical ESG Elektroniksystem und Logistik GmbH
Priority to DE102019102299.1A priority Critical patent/DE102019102299A1/de
Publication of DE102019102299A1 publication Critical patent/DE102019102299A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1487Generic software techniques for error detection or fault masking using N-version programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Verfahren zum automatisierten Erfassen von Fehlern in Computersystemen, wobei das Verfahren das Bereitstellen von Code basierend auf einer Beschreibung eines funktionalen Modells aufweist. Ferner wird der bereitgestellte Code hinsichtlich kritischer Operationen und/oder kritischer Quellen von Eingangsdaten automatisch, mittels eines Code-Analysierers, analysiert, wobei die Eingangsdaten als Daten für Kontrollberechnungen genutzt werden. Anschließend werden zusätzliche Codeabschnitte automatisch, mittels eines Code-Instrumentierers, in den erzeugten Code eingefügt um ein automatisiertes Überwachen der analysierten kritischen Operationen bzw. Daten zu ermöglichen, wobei das Einfügen der zusätzlichen Codeabschnitte auf einem ersten Computersystem und wenigstens einem zweiten Computersystem erzeugt wird, wobei das wenigstens zweite Computersystem als Vergleichssystem fungiert. Abschließend wird ein Abstimmungscode in den erzeugten Code auf dem ersten und zweiten Computersystem eingefügt, mittels dessen ein Vergleich der kritischen Operationen bzw. Daten auf dem ersten Computersystem mit den kritischen Operationen bzw. Daten des zweiten Computersystems durchgeführt und ein Fehler ausgegeben wird sofern der Vergleich der kritischen Operationen bzw. Daten auf dem ersten und dem wenigstens zweiten Computersystem eine signifikante Abweichung ergibt.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung zur systematischen Aufdeckung von vorwiegend zufälligen Fehlern auf einem für einen Ablauf einer Anwendungssoftware benutzten Computersystem.
  • Als Verfahren zur systematischen Aufdeckung von Fehlern sind verschiedene eingebettete Diagnosemechanismen in Hardware und Software bekannt, die jedoch zumeist hochspezifische und/oder komplexe Lösungen darstellen.
  • Sicherheitsstandards bieten eine Vielzahl von Maßnahmen zur Lösung jeweils eines Teilproblems, beispielsweise zur Überwachung eines Speicherbausteins. Die bekannten Maßnahmen greifen jedoch meist tief in das Design von Computersystemen ein. Daher sind derartige Maßnahmen meist teuer und solche Maßnahmen in kommerziell attraktiven Standard-Produkten (commercial-off-theshelf, COTS) üblicherweise weder vorhanden noch nachrüstbar.
  • Des Weiteren sind rein software-basierte Verfahren bekannt, wie zum Beispiel Coded Processing. Nachteilig an diesen Verfahren ist jedoch, dass sie bisher nur unzulänglich erforscht sind und in der gängigen Technik daher nur selten eine Anwendung finden.
  • Ferner ist das Prinzip der Feststellung eines Fehlers durch gegenseitigen Vergleich von Rechenergebnissen mittels einer Abstimmungsvorrichtung (Voter) und die maschinelle Erzeugung von Software-Code beispielsweise aus einem Modell (CodeGenerator) oder durch einen Übersetzer (Compiler) bekannt.
  • Werden die angesprochenen Computersysteme nun in sicherheitskritischen Anwendungen eingesetzt so stellt dies hohe Anforderungen an die Verlässlichkeit derartiger Systeme (Dependability) auf allen Systemebenen. Hierbei wird die Verlässlichkeit wesentlich durch einen Fehleraufdeckungsgrad bestimmt, welchen Diagnosefunktionen während einer Laufzeit bestimmter Anwendungssoftware auf dem Computersystem, beispielsweise einer Rechnerplattform, leisten und sich letztlich in einem bestimmten Diagnosedeckungsgrad abbildet.
  • Es wird ein Verfahren und eine Vorrichtung beschrieben, die vorhandene Software auf verschiedenen Abstraktionsebenen analysiert und an geeigneten Stellen automatisch zusätzlichen Code einfügt, der zur Laufzeit der modifizierten Software fehlerkritische Daten sammelt, vorzugsweise mit Metadaten versieht, und anderen Instanzen (Vergleichssystemen) im System zum Vergleich zur Verfügung stellt. Zudem kann Code hinzugefügt werden, der den Ablauf der Software an geeigneten Stellen vorübergehend anhält und Vergleichsdaten von anderen Instanzen im System sammelt, bewertet, Fehler per Vergleich feststellt, und Mitigationsmaßnahmen zur Laufzeit initiiert.
  • Die erfindungsgemäße Einrichtung ist besonders geeignet zur Aufdeckung und Mitigation von Fehlern in Rechner-Hardware, hardware-naher Firmware, Middleware oder Software, und in maschinell erzeugten Zwischenformaten der AnwendungsSoftware. Durch den während der Laufzeit der Anwendungssoftware erreichbaren hohen Fehleraufdeckungsgrad (Diagnostic Coverage) vereinfacht die Einrichtung insbesondere die Verwendung von wenig verlässlichen Rechnerplattformen für fehlerkritische Anwendungen, beispielsweise die Nutzung von COTS IT-Servern für sicherheitskritische Anwendungen.
  • Mittels der vorliegenden Erfindung kann also sicherheitskritische Software zunächst ohne Rücksicht auf die zur Laufzeit zu nutzende Rechnerplattform entwickelt werden. Die Software kann vorzugsweise anschließend so instrumentiert werden, dass zur Laufzeit eine angemessen intensive und vorzugsweise plattformspezifische Inspektion der Ausführung und der berechneten Daten erfolgt. Dies kann vorzugsweise durch sehr häufigen Vergleich kritischer Zwischenergebnisse mit anderen Instanzen erfolgen, wodurch ein sehr hoher Diagnosedeckungsgrad erzielt werden kann. In Verbindung mit einer geeigneten Systemarchitektur kann somit funktionale Sicherheit auf Rechnerplattformen erreicht werden, die an sich nicht sicher ausgelegt sind, beispielsweise auf COTS-Produkten. Die Erfindung ermöglicht so erhebliche Einsparungen von Lebenszykluskosten und Leistungssteigerungen für sicherheitskritische Anwendungen.
  • Der vorliegenden Erfindung liegt daher die Aufgabe zugrunde, ein Verfahren und eine Vorrichtung vorzusehen um in komplexen Rechnerplattformen/Computersystemen möglichst effizient und wiederholbar einen hohen Diagnosedeckungsgrad zu erreichen.
  • Erfindungsgemäß wird diese Aufgabe durch ein Verfahren nach Anspruch 1 sowie eine Vorrichtung nach Anspruch 13 gelöst. Weitere Ausgestaltungen der Erfindung ergeben sich aus den jeweiligen Unteransprüchen.
  • Insbesondere ist ein Verfahren zum automatisierten Erfassen von Fehlern in Computersystemen vorgesehen, wobei das Verfahren das Bereitstellen von Code basierend auf einer Beschreibung eines funktionalen Modells oder einer programmiersprachlichen Beschreibung aufweist. Ferner wird der erzeugte Code hinsichtlich kritischer Operationen und/oder kritischer Quellen von Eingangsdaten automatisch analysiert, mittels eines Code-Analysierers, wobei die Eingangsdaten als Daten für Kontrollberechnungen genutzt werden. Anschließend werden zusätzliche Codeabschnitte automatisch, mittels eines Code-Instrumentierers, in den erzeugten Code eingefügt um ein automatisiertes Überwachen der analysierten kritischen Operationen bzw. Daten zu ermöglichen, wobei das Einfügen der zusätzlichen Codeabschnitte auf einem ersten Computersystem und wenigstens einem zweiten Computersystem erzeugt wird, wobei das wenigstens zweite Computersystem als Vergleichssystem fungiert. Abschließend wird ein Abstimmungscode in den erzeugten Code auf dem ersten und vorzugsweise auch auf dem zweiten Computersystem eingefügt, mittels dessen jeweils ein Vergleich der kritischen Operationen bzw. Daten auf dem ersten Computersystem mit den kritischen Operationen bzw. Daten des zweiten Computersystems durchgeführt und ein Fehler ausgegeben wird sofern der Vergleich der kritischen Operationen bzw. Daten auf dem ersten und dem wenigstens zweiten Computersystem eine (signifikante) Abweichung ergibt.
  • Vorzugsweise bedeutet signifikant in diesem Zusammenhang eine Abweichung von der Mehrheit der beteiligten Computersysteme. Hierzu sind verschiedene Verfahren für Mehrheitsentscheide bekannt (Voting).
  • In einer vorteilhaften Ausprägung wird die Analyse automatisiert nach definierten Code-Bewertungs-Regeln ausgeführt, vorzugsweise mittels eines Code-Analysierers, wobei die Code-Bewertungs-Regeln beispielsweise die Sicherheitskritikalität oder Schreibvorgänge berücksichtigen. Beispielsweise werden hierzu Schreibvorgänge in kritische Speicherbereiche von einer weiteren Bearbeitung, z.B. einer Instrumentierung, die im Folgenden näher erläutert wird, ausgeschlossen, wenn hierfür bereits andere Sicherungsmechanismen vorgesehen sind.
  • In einem weiteren Ausführungsbeispiel werden vorzugsweise nur interne Register eines Mikroprozessors einbezogen um nur den Prozessor selbst mit der erfindungsgemäßen Einrichtung zu überwachen. Ferner können Zugriffe auf Adressregister identifiziert werden, um den Programmablauf (die Programmsequenz) zu überwachen. Vorzugsweise können auch Pufferspeicher einer seriellen Kommunikation einbezogen werden und somit die Kommunikation selbst überwacht werden.
  • Eine bevorzugte Ausführungsform identifiziert besonders kritische Operationen und identifiziert ferner z.B. Speicherorte oder Register, aus denen zur Laufzeit der Software kritische Eingangsdaten geholt werden, und die Speicherorte oder Register, in denen zur Laufzeit kritische Ergebnisdaten gespeichert werden.
  • In einem alternativen Ausführungsbeispiel wird das Bereitstellen des Codes basierend auf dem funktionalen Modell, sowie die Anwendung des Übersetzers zur Erzeugung des Maschinen- bzw. eines Zwischencodes unabhängig voneinander auf dem ersten und dem zweiten Computersystem, d.h. auf beiden Vergleichssystemen ausgeführt. Gleiches gilt hierbei für das Einfügen von vorübersetztem Code, beispielsweise eines Betriebssystems, der entweder nur in den Maschinencode des ersten Computersystems eingefügt wird oder auch in den bereitgestellten Code des zweiten Computersystems. Dieses gilt analog ebenfalls für den Fall bei dem eine Vielzahl von Vergleichssystemen vorgesehen ist, wobei die oben beschriebenen Schritte dann auf jedem einzelnen System separat ausgeführt werden.
  • In einer weiteren vorteilhaften Ausprägung ist der bereitgestellte Code mehrfach vorhanden, beispielsweise durch mehrere Instanzen des Übersetzers und/oder mehrere Instanzen der Software-Beschreibung erzeugt bzw. beschrieben. Dies ist vorteilhaft da hiermit auch zufällige Fehler der eingesetzten Software-Werkzeuge oder zufällige Fehler in Beschreibungen der Software erkannt werden können. Dies können beispielsweise Fehler in einer aus einem Modell erzeugten hochsprachlichen Beschreibung oder ein zufälliger Fehler eines Assemblers sein. In Folge können durch die Erfindung auch wenig verlässliche Software-Werkzeuge für die Entwicklung kritischer Anwendungen eingesetzt werden, und die Aufdeckung deren zufälliger Fehler erfolgt zur Laufzeit der Software.
  • Ferner kann dem bereitgestellten Code in einem Ausführungsbeispiel ein Paketierungscode ein- oder mehrfach hinzugefügt werden. Der Paketierungscode kann in einer vorteilhaften Weise die zu überwachenden kritischen Operationen und/oder Daten sammeln und zur Kommunikation aufbereiten.
  • Weiterhin kann der Paketierungscode Metadaten umfassen, die die zu überwachenden Daten in einem Paket beschreiben. Mit Hilfe derartiger Metadaten kann eine Überwachung der Daten durch andere Instanzen, beispielsweise weiterer Computersysteme, die als Vergleichssystem fungieren, ermöglicht, vereinfacht oder abgesichert werden. Entsprechende Daten können hierbei vorzugsweise Daten zur Verschlüsselung, Redundanzen, Zeitstempel, Sequenznummern, Blockchains oder Quellenangaben sein.
  • Ferner kann dem bereitgestellten Code in einer weiteren Ausführungsform wenigstens ein Kommunikationscode automatisch, mittels des Code-Instrumentierers, hinzugefügt werden, der geeignet ist mittels einer Kommunikationseinrichtung die paketierten und zu überwachenden Daten an das zweite Computersystem und vorzugsweise an wenigstens ein weiteres Computersystem zu übertragen, wobei das wenigstens eine weitere Computersystem als weiteres Vergleichssystem fungiert. Hierdurch kann die Kommunikation zwischen den einzelnen Systemen vereinfacht werden, was im Besonderen im Fall von räumlich weit getrennten Vergleichssystemen vorteilhaft ist.
  • Vorzugsweise kann dem bereitgestellten Code wenigstens ein Abschaltcode, mittels des Code-Instrumentierers, hinzugefügt werden, wobei der Abschaltcode ein dauerhaftes Abschalten des Computersystems, eine dauerhafte Unterbrechung der Kommunikation oder einen Weiterbetrieb mit reduzierten Eigenschaften bewirkt, sofern der Vergleich der kritischen Operationen bzw. Daten auf dem ersten und dem wenigstens zweiten Computersystem das Ausgeben eines Fehlers erzeugt. Im Fall eines durch den Vergleich der Daten festgestellten Fehlers kann der Abschaltcode in vorteilhafter Weise dessen genügend sichere Isolierung im System erreichen (wenn eine Fail Safe Eigenschaft erreicht werden soll im Sinn eines sicheren Zustands), beispielsweise durch dauerhaftes Abschalten des Computersystems, durch eine dauerhafte Unterbrechung der Kommunikation, oder durch einen Weiterbetrieb des Computersystems mit reduzierten Eigenschaften (Graceful Degradation).
  • In einer weiteren Ausführungsform kann dem bereitgestellten Code automatisch, mittels des Code-Instrumentierers, zusätzlicher Code hinzugefügt werden, der Information über eine Sequenz und/oder der beabsichtigten Dauer einer Ausführung von Teilen des erzeugten Codes über die Kommunikationseinrichtung zur Abstimmung in die Computersysteme überträgt. Dadurch können Fehler in einem Kontrollfluss des instrumentierten Codes als Abweichung durch Vergleich erkannt und geeignet berücksichtigt werden. Dies kann beispielsweise durch ein Aktivieren von Abschalteinrichtungen erreicht werden, die im Folgenden näher erläutert werden.
  • In einer vorteilhaften Ausführung beinhaltet der Code, und gegebenenfalls weitere Instanzen des Codes, mindestens einen vorübersetzten Code, vorzugsweise den Code eines Betriebssystems oder einer Middleware, der durch die Erfindung gemeinsam mit dem Code überwacht werden kann. Somit können beispielsweise nicht funktional sicher ausgelegte Betriebssysteme mit der erfindungsgemäßen Einrichtung genügend überwacht und für sichere Anwendungen eingesetzt werden.
  • Die der Erfindung zugrundeliegende Aufgabe wird auch durch eine Vorrichtung zum automatisierten Erfassen von potenziellen Fehlerquellen in Computersystemen gelöst. Die Vorrichtung weist hierbei einen Code-Analysierer auf der einen bereitgestellten Code automatisch hinsichtlich kritischer Operationen und/oder kritischer Quellen von Eingangsdaten analysiert, wobei die Eingangsdaten als Daten für Kontrollberechnungen genutzt werden. Die Vorrichtung weist ferner einen Code-Instrumentierer auf, der zum automatischen Einfügen von zusätzlichen Codeabschnitten in den bereitgestellten Code und zum automatischen Überwachen der analysierten kritischen Operationen bzw. Daten konfiguriert ist, wobei das Einfügen der zusätzlichen Codeabschnitte auf einem ersten Computersystem und wenigstens einem zweiten Computersystem ausgeführt wird, wobei das wenigstens zweite Computersystem als Vergleichssystem fungiert. Der Code-Instrumentierer ist ferner konfiguriert einen Abstimmungscode in den bereitgestellten Code auf dem ersten und zweiten Computersystem einzufügen, wobei mittels des Abstimmungscodes, ein Vergleich der kritischen Operationen bzw. Daten auf dem ersten Computersystem mit den kritischen Operationen bzw. Daten des zweiten Computersystems durchgeführt wird. Abschließend wird mittels des Abstimmungscodes ein Fehler ausgegeben, sofern der Vergleich der kritischen Operationen bzw. Daten auf dem ersten und dem wenigstens zweiten Computersystem eine signifikante Abweichung ergibt.
  • In einer bevorzugten Ausführungsform kann ein sequentiell angewendeter Übersetzer aus einer Code-Beschreibung einen maschinell ausführbaren Code erzeugen, wobei der Übersetzer ein Compiler, Cross-Compiler oder ein Modell umsetzender Code Erzeuger ist.
  • Hierbei stellen das erste und zweite Computersystem die Systeme des Vergleichssystems dar. In einer alternativen Ausführungsform kann jedoch eine Vielzahl derartiger Computersysteme vorhanden sein, die dann gemeinsam das Vergleichssystem darstellen. Durch eine höhere Anzahl von Vergleichssystemen lässt sich ein höherer Fehleraufdeckungsgrad erzielen, wodurch dieser flexibel an eine geforderte Verlässlichkeit des Systems anpassbar ist.
  • Vorzugsweise können die obigen Computersysteme mit Computerhardware, hardwarenahe Firmware, Middleware oder Software ausgestaltet sein, wobei eine Beschreibung des funktionalen Modells oder der programmiersprachlichen Beschreibung hierbei entweder manuell oder maschinell erzeugt sein kann.
  • Vorzugsweise kann der Code-Instrumentierer dem bereitgestellten Code wenigstens einen Kommunikationscode hinzufügen, der geeignet ist mittels der Kommunikationseinrichtung die zu überwachenden Daten an das zweite Computersystem und vorzugsweise an wenigstens ein weiteres Computersystem zu übertragen, wobei das wenigstens eine weitere Computersystem als weiteres Vergleichssystem fungiert, wobei die Kommunikationseinrichtung ein Datenbus oder ein Kommunikationsnetzwerk ist, und wobei die Kommunikationseinrichtung ferner geeignet ist Metadaten der zu überwachenden Daten zu übertragen. In einer weiteren Ausführung kann der Code-Instrumentierer einen Paketierungscode ein- oder mehrfach in den erzeugten Code einfügen.
  • Das Kommunikationsnetzwerk kann dabei die Metadaten vorzugsweise zur Ausführungszeit von dem Computersystem, das den instrumentierten Code ausführt, an mindestens ein weiteres Computersystem übertragen, das als Vergleichssystem dient. Hierfür wird erfindungsgemäß vorausgesetzt, dass ein Vergleichssystem einen in gleicher oder gleichwertiger Weise instrumentierten Code ausführt.
  • In einer vorteilhaften Ausführung weist die Vielzahl der Vergleichssysteme jeweils Code-Analysierer, Code-Instrumentierer und jeweilige Abschalteinrichtungen auf, wobei ein geeigneter Abstimmungscode die Vielzahl der Vergleichssysteme bezüglich des Vergleichs der Daten synchronisiert. In diesem Fall erfolgt ein Vergleich der Daten bzw. Operationen durch einen alle Instanzen/Vergleichssysteme berücksichtigenden Abstimmungscode, vorzugsweise, durch eine M-out-of-N (MooN) Mehrheitsentscheidung. Vorzugsweise sind die Abschalteinrichtungen der verschiedenen Systeme hierbei logisch verknüpft, wobei diese logischen Verknüpfungen beispielsweise als Relaisausgänge realisiert sind.
  • In einer weiteren Ausführung können die Vergleichssysteme bzw. Vergleichsinstanzen, bestehend aus einem ersten Computersystem und wenigstens einem oder mehreren weiteren Computersystemen, eine hohe räumliche Trennung aufweisen, d.h. dass die Vergleichssysteme im Extremfall an jedem beliebigen Ort aufgestellt sein können und hierbei lediglich durch ein geeignetes Kommunikationssystem, beispielsweise die oben beschriebene Kommunikationseinrichtung, miteinander verbunden sein müssen.
  • Hierbei ist zu beachten, dass die unterschiedlichen zu vergleichenden kritischen Operationen bzw. Daten nicht zwangsläufig synchron überprüft bzw. durchgeführt werden müssen. Im Fall größerer Kommunikationslatentzeiten zwischen dem ersten Computersystem und einem oder mehreren Vergleichssystemen, kann eines der Systeme so lange angehalten werden bis entsprechende Ergebnisse von allen beteiligten Systemen vorliegen.
  • Die vorliegende Erfindung ist somit vorteilhaft, indem, abhängig von einer geforderten Fehlerabdeckung, das System über den automatisiert eingefügten Code flexibel verändert werden kann, damit dort, wo die Anforderungen hoch sind die Überwachung entsprechend aufwendiger erfolgen kann. Falls in bestimmten Fällen durch eine Maßnahme allein der geforderte Fehleraufdeckungsgrad nicht erreicht werden kann so können zusätzliche Testverfahren mit denen des vorliegenden Systems einfach und flexibel, aufgrund des modularen Charakters, kombiniert werden.
  • Die vorliegende Erfindung wird nachfolgend im Detail unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Es zeigen:
    • 1 zeigt einen Testablauf zur Aufdeckung von Fehlern in Rechnerplattformen.
  • Ein in der nachfolgenden Beschreibung verwendeter Ablauf verschiedener Verfahrensschritte bezieht sich primär auf die Darstellung in der Zeichnung, und sollte daher nicht einschränkend gesehen werden. Einzelne Verfahrensschritte können daher auch in einer anderen Reihenfolge oder als Alternative durchgeführt werden.
  • 1 zeigt ein Ausführungsbeispiel eines erfindungsgemäßen Verfahrens zur Erfassung von statistischen Fehlern. Das Verfahren nach 1 umfasst zunächst das Bereitstellen von mindestens einer Beschreibung einer Software-Funktionalität (1a), die in einer mehr oder weniger abstrakten Form, beispielsweise als funktionales Modell, in einer Hochsprache oder Assembler-Sprache vorliegt.
  • Ein oder mehrere sequenziell angewendete Übersetzer (2a) erzeugen aus der Software-Funktionalität (1a) einen mittelbar oder unmittelbar maschinell ausführbaren Maschinen- oder Zwischen-Code (3a), der im Folgenden „Code“ genannt wird.
  • Die Beschreibung der Software-Funktionalität (1a) und die Anwendung des Übersetzers stellen hierbei alternative Schritte dar, die nicht zwangsläufig Teil des erfindungsgemäßen Verfahrens sein müssen und alternativ zum Start des Verfahrens schon ausgeführt sein können.
  • Erfindungsgemäß wird der bereitgestellte Code (3a) durch einen automatisierten Code-Analysierer (5a) nun wie folgt analysiert (inspiziert) und modifiziert (instrumentiert):
    • Der bereitgestellte Code (3a) wird mit Hilfe eines geeigneten Moduls, beispielsweise einem Code-Analysierer (5a), bezüglich der in geeigneten Abschnitten des Codes beabsichtigten kritischen Operationen, und/oder bezüglich der benutzten Quellen für die Eingangsdaten einer Kontrollberechnung zur Bereitstellung von Ausgangsdaten untersucht. Der Begriff „Daten“ beinhaltet hier explizit auch Daten zur Adressierung, beispielsweise die Adresse für einen Funktionsaufruf.
  • Das Analysieren kann hierbei vorzugsweise nach definierten Code-Bewertungs-Regeln (6) ausgeführt werden, wobei ferner die Code-Bewertungs-Regeln (6) Operationen und/oder Speichervorgänge auf verschiedenen Abstraktionsebenen des Codes (3a) adressieren, um diese in die Überwachung einzubeziehen. Beispielsweise werden sowohl Funktionsaufrufe in der Hochsprachenebene des Codes (3a), als auch Zugriffe auf Konfigurationsregister eines Prozessors einbezogen und somit überwacht.
  • In einem nächsten Schritt wird nun in den erzeugten Code (3a), mittels eines geeigneten Moduls, beispielsweise eines Code-Instrumentierers (5a), automatisch zusätzlicher Programmcode einfügt und somit mindestens ein instrumentierter Code (8a) erzeugt, und zwar vorzugsweise an Stellen, die durch den Code-Analysierer, mittels der Code-Bewertungskriterien als kritisch identifiziert wurden. Hierbei wird vorzugsweise mindestens ein Kommunikations-Code (7) dem Code (3a) hinzugefügt, der geeignet ist vorzugsweise einem Datenbus oder Kommunikationsnetzwerk, die zu überwachenden Daten zu übermitteln. Wobei die Übertragung der Daten vorzugsweise mittels einer geeigneten Kommunikationseinrichtung erfolgen kann.
  • Alternativ kann hierbei zusätzlich ein Paketierungs-Code (6) ein- oder mehrfach in den Code (3a) eingefügt werden, der die zu überwachenden identifizierten Daten sammelt und kommunikationsgerecht paketiert aufbereitet. In dem Paketierungs-Code (6) werden beispielsweise Metadaten eingeschlossen, die die Eigenschaften der zu überwachenden Daten im Paket beschreiben oder die Überwachung durch andere Instanzen ermöglichen, vereinfachen oder absichern.
  • Im Weiteren wird nun mindestens ein Abstimmungs-Code (7), mittels des Code-Instrumentierers automatisch dem Code (3a) hinzugefügt, der die zu überwachenden Daten und gegebenenfalls die Metadaten mit denen mindestens eines anderen Computersystems bzw. Rechnerinstanz (9b) geeignet vergleicht. Hierzu kann es zunächst erforderlich sein, entsprechende Vergleichsdaten von anderen Computersystemen (9b) zu empfangen, vorzugsweise über die erwähnte alternative Kommunikations-Einrichtung (10).
  • Sofern die beiden Vergleichssysteme räumlich sehr stark voneinander getrennt sind, und dadurch Laufzeiten zwischen den Systemen relevant werden, kann möglicherweise eine Synchronität im Abarbeiten des Codes auf den beiden Systemen nicht sichergestellt werden. In einem derartigen Fall muss das Computersystem (9a) gegebenenfalls mit der Abarbeitung des instrumentierten Codes (8a) warten, bis genügend valide Vergleichsdaten empfangen worden sind. Erfindungsgemäß findet somit inhärent eine Synchronisation der Abläufe des instrumentierten Codes (8a) und (8b) an den Punkten statt, die durch die Code Analyse in Schritt (5a) und gegebenenfalls (5b) bestimmt wurden.
  • Mittels des Abstimmungs-Codes (7), als Bestandteil des instrumentierten Codes (8a), werden nun zur Laufzeit des instrumentierten Codes (8a), die Daten der beteiligten Rechner-Instanzen (9a) und (9b) miteinander verglichen und bei einer erheblichen Abweichung ein Fehler festgestellt. Der Vergleich kann hierbei mittels eines Mehrheitsentscheids (Voting), im Abstimmungs-Code (7) realisiert sein. Ferner kann der Mehrheitsentscheid durch den instrumentierten Code (8a) der beteiligten Rechner (9b) selbst getroffen werden, wenn dies so im Abstimmungs-Code (7) vorgesehen ist.
  • Alternativ kann abschließend durch eine Abschalteinrichtung (11a) ein Abschalten des Systems erfolgen, sofern durch den Vergleich der Systeme ein Fehler festgestellt wurde. Dieser zusätzliche Schritt ist allerdings nur dann vorgesehen, wenn die Gefahr besteht dass durch den festgestellten Fehler ein Schaden an einem der Systeme oder durch das Fehlverhalten eines der Systeme zu befürchten ist.

Claims (19)

  1. Computerimplementiertes Verfahren zum automatisierten Erfassen von Fehlern in Computersystemen, wobei das Verfahren folgende Schritte aufweist: Bereitstellen von Code basierend auf einer Beschreibung eines funktionalen Modells; automatisches Analysieren des erzeugten Codes, mittels eines Code-Analysierers, hinsichtlich kritischer Operationen und/oder kritischer Quellen von Eingangsdaten, wobei die Eingangsdaten als Daten für Kontrollberechnungen genutzt werden; automatisches Einfügen von zusätzlichen Codeabschnitten in den erzeugten Code, mittels eines Code-Instrumentierers, zum automatisierten Überwachen der analysierten kritischen Operationen bzw. Daten, wobei das Einfügen der zusätzlichen Codeabschnitte auf einem ersten Computersystem und wenigstens einem zweiten Computersystem erzeugt wird, wobei das wenigstens zweite Computersystem als Vergleichssystem fungiert; automatisches Einfügen eines Abstimmungscodes in den erzeugten Code, mittels des Code-Instrumentierers, auf dem ersten und zweiten Computersystem; Vergleichen, mittels des Abstimmungscodes, der kritischen Operationen bzw. Daten auf dem ersten Computersystem mit den kritischen Operationen bzw. Daten des zweiten Computersystems; und Ausgeben eines Fehlers sofern der Vergleich der kritischen Operationen bzw. Daten auf dem ersten und dem wenigstens zweiten Computersystem eine Abweichung ergibt.
  2. Computerimplementiertes Verfahren nach Anspruch 1, wobei das erste implementierte Computersystem und das zweite instrumentierte Computersystem unabhängig voneinander den Vergleich der kritischen Operationen bzw. Daten ausführen.
  3. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das Analysieren ferner das identifizieren von kritischen Speicherorten und/oder Registern aufweist, und wobei das Analysieren anhand von Code-Bewertungsregeln ausgeführt wird, basierend auf einer Sicherheitskritikalität, einer Fehlerwahrscheinlichkeit eines bestimmten Codeabschnitts oder von Lese- und Schreibevorgängen in kritische Speicherbereiche.
  4. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei dem erzeugten Code wenigstens ein Kommunikationscode hinzugefügt wird, der geeignet ist mittels einer Kommunikationseinrichtung die paketierten und zu überwachenden Daten an das zweite Computersystem und vorzugsweise an wenigstens ein weiteres Computersystem überträgt, wobei die Kommunikationseinrichtung ein Datenbus oder ein Kommunikationsnetzwerk ist, und wobei die Kommunikationseinrichtung ferner geeignet ist Metadaten der zu überwachenden Daten zu übertragen.
  5. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei dem erzeugten Code wenigstens ein Abschaltcode hinzugefügt wird, wobei der Abschaltcode ein dauerhaftes Abschalten des Computersystems, eine dauerhafte Unterbrechung der Kommunikation oder einen Weiterbetrieb mit reduzierten Eigenschaften bewirkt, sofern der Vergleich der kritischen Operationen bzw. Daten auf dem ersten und dem wenigstens zweiten Computersystem das Ausgeben eines Fehlers erzeugt.
  6. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei dem erzeugten Code ferner Code hinzugefügt wird, der Information über eine Sequenz und/oder Dauer einer Ausführung von Teilen des erzeugten Codes über die Kommunikationseinrichtung zur Abstimmung in die Computersysteme überträgt.
  7. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei ein Paketierungscode ein- oder mehrfach in den erzeugten Code eingefügt wird.
  8. Computerimplementiertes Verfahren nach Anspruch 6, wobei der Paketierungscode Metadaten umfasst, die die zu überwachenden Daten in einem Paket beschreibt und wobei der Paketierungscode vorzugsweise Metadaten umfasst.
  9. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Metadaten wenigstens eines des Folgenden sind: Daten zur Verschlüsselung, Redundanzen, Zeitstempel, Sequenznummern, Blockchains oder Quellenangaben.
  10. Computerimplementiertes Verfahren nach Anspruch 1, wobei das Vergleichssystem aus einer Vielzahl von Computersystemen besteht, die jeweils eine entsprechende Abschaltvorrichtung aufweisen, wobei die jeweiligen Abschaltvorrichtungen logisch verknüpft sind.
  11. Computerimplementiertes Verfahren nach Anspruch 1, wobei das Bereitstellen von Code basierend auf einer Beschreibung eines funktionalen Modells, mehrfach ausgeführt wird.
  12. Computerimplementiertes Verfahren nach Anspruch 1, wobei der bereitgestellte Code auf dem Computersystem, sowie auf dem einen oder den mehreren Vergleichssystemen, vorübersetzten Code aufweist, wobei der vorübersetzte Code ein Code eines Betriebssystems oder einer Middleware ist.
  13. Vorrichtung zum automatisierten Erfassen von Fehlern in Computersystemen, wobei die Vorrichtung Folgendes aufweist: einen Code-Analysierer, der konfiguriert ist zum automatischen Analysieren eines bereitgestellten Codes hinsichtlich kritischer Operationen und/oder kritischer Quellen von Eingangsdaten, wobei die Eingangsdaten als Daten für Kontrollberechnungen genutzt werden; einen Code-Instrumentierer, der konfiguriert ist: zum automatischen Einfügen von zusätzlichen Codeabschnitten in den bereitgestellten Code, zum automatischen Überwachen der analysierten kritischen Operationen bzw. Daten, wobei das Einfügen der zusätzlichen Codeabschnitte auf einem ersten Computersystem und wenigstens einem zweiten Computersystem erzeugt wird, wobei das wenigstens zweite Computersystem als Vergleichssystem fungiert; zum automatischen Einfügen eines Abstimmungscode in den bereitgestellten Code auf dem ersten und zweiten Computersystem, wobei mittels des Abstimmungscodes, ein Vergleich der kritischen Operationen bzw. Daten auf dem ersten Computersystem mit den kritischen Operationen bzw. Daten des zweiten Computersystems durchgeführt wird; und eine Kommunikationseinrichtung zum Ausgeben eines Fehlers, mittels des Abstimmungscodes, sofern der Vergleich der kritischen Operationen bzw. Daten auf dem ersten und dem wenigstens zweiten Computersystem eine signifikante Abweichung ergibt.
  14. Vorrichtung nach Anspruch 13, wobei der Code-Analysierer ferner konfiguriert ist Speicherorte und/oder Register zu identifizieren, wobei das Analysieren vorzugsweise anhand von Code-Bewertungsregeln ausgeführt wird, die vorzugsweise auf einer Sicherheitskritikalität, einer Fehlerwahrscheinlichkeit eines bestimmten Codeabschnitts oder Lese- und Schreibevorgänge in kritische Speicherbereiche basieren.
  15. Vorrichtung nach einem der Ansprüche 13-14, wobei der Code-Instrumentierer dem erzeugten Code wenigstens einen Kommunikationscode hinzufügt, der geeignet ist mittels der Kommunikationseinrichtung die paketierten und zu überwachenden Daten an das zweite Computersystem und vorzugsweise an wenigstens ein weiteres Computersystem zu übertragen, wobei das wenigstens eine weitere Computersystem als weiteres Vergleichssystem fungiert, wobei die Kommunikationseinrichtung ein Datenbus oder ein Kommunikationsnetzwerk ist, und wobei die Kommunikationseinrichtung ferner geeignet ist Metadaten der zu überwachenden Daten zu übertragen.
  16. Vorrichtung nach einem der Ansprüche 13-15, wobei der Code-Instrumentierer ferner konfiguriert ist einen Paketierungscode ein- oder mehrfach in den erzeugten Code einzufügen, wobei der Paketierungscode Metadaten umfasst, die die zu überwachenden Daten in einem Paket beschreibt.
  17. Vorrichtung nach einem der Ansprüche 13-16, wobei der Code durch einen Übersetzer bereitgestellt wird, der aus einer Code-Beschreibung einen maschinell ausführbaren Code erzeugt, wobei der Übersetzer ein Compiler, Cross-Compiler oder ein Modell umsetzender Code Erzeuger ist.
  18. Vorrichtung nach Anspruch 13, wobei das Vergleichssystem aus einer Vielzahl von Computersystemen besteht, die jeweils eine entsprechende Abschaltvorrichtung aufweisen, wobei die jeweiligen Abschaltvorrichtungen vorzugsweise logisch verknüpft sind.
  19. Vorrichtung nach Anspruch 13, wobei die Vielzahl der Vergleichssysteme jeweils Code-Analysierer, Code-Instrumentierer und jeweilige Abschalteinrichtungen aufweisen, wobei der Abstimmungscode die Vielzahl der Vergleichssysteme bezüglich des Vergleichs der Daten synchronisiert.
DE102019102299.1A 2019-01-30 2019-01-30 Verfahren und Vorrichtung zum automatisierten Erfassen von Fehlern in Computersystemen Pending DE102019102299A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102019102299.1A DE102019102299A1 (de) 2019-01-30 2019-01-30 Verfahren und Vorrichtung zum automatisierten Erfassen von Fehlern in Computersystemen

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019102299.1A DE102019102299A1 (de) 2019-01-30 2019-01-30 Verfahren und Vorrichtung zum automatisierten Erfassen von Fehlern in Computersystemen

Publications (1)

Publication Number Publication Date
DE102019102299A1 true DE102019102299A1 (de) 2020-07-30

Family

ID=71524551

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019102299.1A Pending DE102019102299A1 (de) 2019-01-30 2019-01-30 Verfahren und Vorrichtung zum automatisierten Erfassen von Fehlern in Computersystemen

Country Status (1)

Country Link
DE (1) DE102019102299A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116915958A (zh) * 2023-09-06 2023-10-20 广东电网有限责任公司佛山供电局 一种一次操作视频监控解析方法及相关装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9836354B1 (en) * 2014-04-28 2017-12-05 Amazon Technologies, Inc. Automated error detection and recovery for GPU computations in a service environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9836354B1 (en) * 2014-04-28 2017-12-05 Amazon Technologies, Inc. Automated error detection and recovery for GPU computations in a service environment

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116915958A (zh) * 2023-09-06 2023-10-20 广东电网有限责任公司佛山供电局 一种一次操作视频监控解析方法及相关装置
CN116915958B (zh) * 2023-09-06 2024-02-13 广东电网有限责任公司佛山供电局 一种一次操作视频监控解析方法及相关装置

Similar Documents

Publication Publication Date Title
DE102011121620B4 (de) Verfahren und Systeme zum Diagnostizieren von Hardware- und Softwarefehlern unter Verwendung von mit Zeitstempeln versehenen Ereignissen
EP2273369B1 (de) Verfahren zur Darstellung einer sicherheitsrelevanten Information auf einer Anzeigevorrichtung und Vorrichtung zur Durchführung des Verfahrens
DE60017457T2 (de) Verfahren zur isolierung eines fehlers in fehlernachrichten
DE10307342B4 (de) Vorrichtung und Verfahren zur modellbasierten On-Board-Diagnose
DE102006056432A1 (de) Verfahren zum Testen eines Computerprogramms
DE4305522C2 (de) Einrichtung zur rechnergestützten Diagnose eines aus Modulen bestehenden technischen Systems
DE2515297A1 (de) Pruefsystem fuer logische netzwerke mit simulatororientiertem fehlerpruefgenerator
WO2006105930A1 (de) Diagnosesystem zur bestimmung einer gewichteten liste möglicherweise fehlerhafter komponenten aus fahrzeugdaten und kundenangaben
EP2852896B1 (de) Anordnung mit einem mikroprozessorsystem
DE102006029138A9 (de) Verfahren und Computerprogrammprodukt zur Detektion von Speicherlecks
DE102019203251B3 (de) Verfahren und System zur sicheren Signalmanipulation für den Test integrierter Sicherheitsfunktionalitäten
EP1246033A1 (de) Verfahren zur Überwachung konsistenter Speicherinhalte in redundanten Systemen
DE102019102299A1 (de) Verfahren und Vorrichtung zum automatisierten Erfassen von Fehlern in Computersystemen
DE102008043374A1 (de) Vorrichtung und Verfahren zur Generierung redundanter, aber unterschiedlicher Maschinencodes aus einem Quellcode zur Verifizierung für ein sicherheitskritisches System
DE102005020899A1 (de) Verfahren und Vorrichtung zur Messung der Testabdeckung bei Multithreading-Programmen
DE102020209228A1 (de) Verfahren zum Überwachen wenigstens einer Recheneinheit
DE102019109353B3 (de) Dynamische Anomalieerkennung und -behandlung
DE102018217729B4 (de) Verfahren und Vorrichtung zum Schätzen von mindestens einer Leistungskennzahl eines Systems
DE19529342C2 (de) Verfahren zur Visualisierung des Überdeckungsgrades beim Test eines endlichen Automaten
DE102021126271A1 (de) Verfahren und System zur Verknüpfung von Fehlermeldungen
DE102016203303A1 (de) Fahrzeugdiagnose
DE10148032A1 (de) Verfahren zum Überprüfen eines Rechnerkerns eines Mikroprozessors oder eines Mikrocontrollers
EP4036739A1 (de) Fehleranfälligkeit einer build-pipeline
DE102015223579A1 (de) Verfahren und Vorrichtung zum Überprüfen eines Komponentenfehlerbaums
DE102022207612A1 (de) Computer-implementiertes Verfahren zur Verifikation einer Softwarekomponente einer automatisierten Fahrfunktion

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication