1 research outputs found

    Predicting Errors in Concurrent Systems

    Get PDF
    Die Verbreitung von Multikernprozessoren hat die parallele Programmierung allgegenwĂ€rtig gemacht. Parallele Programmierung ist schwierig, da sie die Entwicklung auf Grund vielfacher KontrollflĂŒsse und Nicht-Determinismus fehleranfĂ€llig macht. ZusĂ€tzlich gibt es neue Arten von Fehlern, wie z.B. WettlĂ€ufe, Verklemmungen oder Reihenfolgeverletzung. Diese Fehler sind wegen der großen Anzahl von möglichen VerschrĂ€nkungen schwer zu finden. Dynamische AnalyseansĂ€tze fĂŒhren das Programm aus und untersuchen die beobachtete AusfĂŒhrung. Dynamische Analyse ist prĂ€zise, da sie eine tatsĂ€chliche AusfĂŒhrung mit realen Werten und ZustĂ€nden beobachtet. Diese AnsĂ€tze erzeugen falsch Negative, wegen nicht erforschter Wege und VerschrĂ€nkungen. Die unterschiedlichen VerschrĂ€nkungen treten mit unterschiedlicher HĂ€ufigkeit auf, wegen externer Faktoren, wie z.B. Compiler, Prozessor oder Arbeitslast. In dieser Arbeit prĂ€sentieren wir einen Ansatz, der Fehler aus einer einzigen Spur eines parallelen Programms vorhersagt. Wir berechnen off-line alternative VerschrĂ€nkungen, um den Zeitmessungseffekt der beobachteten AusfĂŒhrung zu reduzieren. Wir bauen ein Modell mit Hilfe einer Prozessalgebra, das die Reihenfolge der Spur verallgemeinert; es extrapoliert mögliche VerschrĂ€nkungen. Im Modell wird nach verschiedenen NebenlĂ€ufigkeitsfehlern gesucht. Ein vorhergesagter Fehler wird von einer VerschrĂ€nkung begleitet, die in dem Programm erzwungen wird, um den Fehler zu reproduzieren. Der Ansatz wurde fĂŒr Verklemmungs- und Wettlauferkennung im Vergleich zu anderen dynamischen AnsĂ€tzen evaluiert. Die Verringerung von falschen Warnungen bewegt sich im Bereich von 50% bis 86%, mit gleicher oder höherer PrĂ€zision. Das vorgestellte Werkzeug und sein Modell sind anpassbar fĂŒr andere Reihenfolgeverletzungen. Diese Fehler erfordern eine Spezifikation, die die relevanten Ereignisse im Programm definiert und die gĂŒltigen oder ungĂŒltigen Ordnungen beschreibt. Wir zeigen dieses Vorgehen an sieben Anwendungsbeispielen
    corecore