Zur Seitenansicht
 

Titelaufnahme

Titel
Debugging support for non-deterministic actor programs / submitted by Dominik Aumayr
VerfasserAumayr, Dominik
Begutachter / BegutachterinMössenböck, Hanspeter
ErschienenLinz, 2017
Umfangix, 87 Seiten : Illustrationen
HochschulschriftUniversität Linz, Masterarbeit, 2017
SpracheEnglisch
DokumenttypMasterarbeit
Schlagwörter (EN)Concurrency / Debugging / Actors
URNurn:nbn:at:at-ubl:1-17766 Persistent Identifier (URN)
Zugriffsbeschränkung
 Das Werk ist gemäß den "Hinweisen für BenützerInnen" verfügbar
Dateien
Debugging support for non-deterministic actor programs [1.23 mb]
Links
Nachweis
Klassifikation
Zusammenfassung (Englisch)

The widespread adoption of concurrency in modern programs increases the importance of concurrency bugs that come with it. Compared to other approaches, the actor model is able to reduce these issues to one area: message races. Besides message races, where messages are sent to the same receiver without having a ordering guarantee, small differences in program scheduling add another source of non-determinism. The resulting non-deterministic program behavior is particularly challenging when it affects the occurrence of bugs, so that they occur in only a few program executions, which makes it hard to debug the application. As a solution to the problem of non-determinism, this thesis proposes a record and replay approach for the actor model, which uses recorded data of a previous execution to enforce the same order of messages in a replay execution. Therefore providing the ability to deterministically repeat executions of non-deterministic programs for debugging. Furthermore, assertions/contracts are presented as a way to identify issues in complex actor programs. The combined use of deterministic replay and high-level assertions/contracts simplifies interactive debugging of such systems for developers. Our experiments show, that tracing executions of actor programs has a low overhead for 15 benchmarks of the Savina benchmark suite, which makes it practical for a range of common programs using the actor model. To my knowledge, this is the first system combining a record and replay approach with assertions/contracts to simplify debugging of non-deterministic communicating event loop actor programs.

Zusammenfassung (Deutsch)

Concurrency erfreut sich heute einer weiten Verbreitung, dadurch erhöht sich auch die Bedeutung, die den damit einhergehenden Problemen zukommt. Im Vergleich mit anderen Ansätzen ist das Aktor Model in der lage diese Probleme auf einen einzigen Bereich einzuschränken: Message Races. Neben Message Races, bei denen Nachrichten ohne garantiere Ordnung an einen Empfänger gesendet werden, können auch kleine Unterschiede im Scheduling eine Quelle für Non-Determinismus sein. Das resultierende non-deterministische Verhalten eines Programms stellt eine besondere Herausforderung dar, wenn dadurch das Auftreten eines Fehlers beeinflusst wird, wodurch dieser nur selten auftritt, was das debuggen erheblich erschwert. Als mögliche Lösung für dieses Problem des non-determinismus, wird in dieser Arbeit ein Record and Replay Ansatz präsentiert, welcher Daten, die in einer früheren Ausführung aufgezeichnet wurden, nutzt um die gleiche Message Reihenfolge im Replay zu erzwingen. Dadurch wird es möglich non-deterministische Programme Deterministisch zu wiederholen und zu debuggen. Außerdem werden Assertions/Contracts als Maßnahme zur Identifizierung von Problemen in komplexen Aktor Programmen präsentiert. Die kombinierte Verwendung von deterministischem Replay und Assertions/Contracts vereinfacht interaktives debuggen solcher Systeme für Entwickler. Unsere Experimente zeigen, dass Tracing von Aktor Programmen für 15 Benchmarks der Savina Benchmark Suite einen niedrigen Overhead hat, dadurch ist es für eine Reihe von Programmen geeignet, die auf dem Aktor Model basieren. Nach meinem Wissen ist dies das erste System, welches den Record and Replay Ansatz mit Assertions/Contracts kombiniert, um debuggen non-deterministischer Communicating Event Loop Aktor Programme zu vereinfachen.