Many of today's software systems are parallel or concurrent. With the rise of Node.js and more generally event-loop architectures, many systems need to handle concurrency. However, its non-deterministic behavior makes it hard to reproduce bugs. Today's interactive debuggers unfortunately do not support developers in debugging non-deterministic issues. They only allow us to explore a single execution path. Therefore, some bugs may never be reproduced in the debugging session, because the right conditions are not triggered. As a solution, we propose multiverse debugging, a new approach for debugging non-deterministic programs that allows developers to observe all possible execution paths of a parallel program and debug it interactively. We introduce the concepts of multiverse breakpoints and stepping, which can halt a program in different execution paths, i.e. universes. We apply multiverse debugging to AmbientTalk, an actor-based language, resulting in Voyager, a multiverse debugger implemented on top of the AmbientTalk operational semantics. We provide a proof of non-interference, i.e., we prove that observing the behavior of a program by the debugger does not affect the behavior of that program and vice versa. Multiverse debugging establishes the foundation for debugging non-deterministic programs interactively, which we believe can aid the development of parallel and concurrent systems.
%0 Conference Paper
%1 TorresLopez:2019:MD
%A Torres Lopez, Carmen
%A Gurdeep Singh, Robbert
%A Marr, Stefan
%A Gonzalez Boix, Elisa
%A Scholliers, Christophe
%B 33rd European Conference on Object-Oriented Programming
%D 2019
%I Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik
%K Actors AmbientTalk Concurrency Debugging FormalSemantics Formalism MeMyPublication Multiverse NonDeterminism Redex myown
%N 27
%P 27:1--27:30
%R 10.4230/LIPIcs.ECOOP.2019.27
%T Multiverse Debugging: Non-deterministic Debugging for Non-deterministic Programs
%V 134
%X Many of today's software systems are parallel or concurrent. With the rise of Node.js and more generally event-loop architectures, many systems need to handle concurrency. However, its non-deterministic behavior makes it hard to reproduce bugs. Today's interactive debuggers unfortunately do not support developers in debugging non-deterministic issues. They only allow us to explore a single execution path. Therefore, some bugs may never be reproduced in the debugging session, because the right conditions are not triggered. As a solution, we propose multiverse debugging, a new approach for debugging non-deterministic programs that allows developers to observe all possible execution paths of a parallel program and debug it interactively. We introduce the concepts of multiverse breakpoints and stepping, which can halt a program in different execution paths, i.e. universes. We apply multiverse debugging to AmbientTalk, an actor-based language, resulting in Voyager, a multiverse debugger implemented on top of the AmbientTalk operational semantics. We provide a proof of non-interference, i.e., we prove that observing the behavior of a program by the debugger does not affect the behavior of that program and vice versa. Multiverse debugging establishes the foundation for debugging non-deterministic programs interactively, which we believe can aid the development of parallel and concurrent systems.
%@ 978-3-95977-111-5
@inproceedings{TorresLopez:2019:MD,
abstract = {Many of today's software systems are parallel or concurrent. With the rise of Node.js and more generally event-loop architectures, many systems need to handle concurrency. However, its non-deterministic behavior makes it hard to reproduce bugs. Today's interactive debuggers unfortunately do not support developers in debugging non-deterministic issues. They only allow us to explore a single execution path. Therefore, some bugs may never be reproduced in the debugging session, because the right conditions are not triggered. As a solution, we propose multiverse debugging, a new approach for debugging non-deterministic programs that allows developers to observe all possible execution paths of a parallel program and debug it interactively. We introduce the concepts of multiverse breakpoints and stepping, which can halt a program in different execution paths, i.e. universes. We apply multiverse debugging to AmbientTalk, an actor-based language, resulting in Voyager, a multiverse debugger implemented on top of the AmbientTalk operational semantics. We provide a proof of non-interference, i.e., we prove that observing the behavior of a program by the debugger does not affect the behavior of that program and vice versa. Multiverse debugging establishes the foundation for debugging non-deterministic programs interactively, which we believe can aid the development of parallel and concurrent systems.},
acceptancerate = {0.37},
added-at = {2019-06-06T13:56:17.000+0200},
appendix = {https://doi.org/10.4230/DARTS.5.2.4},
author = {Torres Lopez, Carmen and Gurdeep Singh, Robbert and Marr, Stefan and Gonzalez Boix, Elisa and Scholliers, Christophe},
biburl = {https://www.bibsonomy.org/bibtex/24f1bc5cbd76622380f9f6f3b2ff2ad35/gron},
blog = {https://stefan-marr.de/2019/07/what-if-we-could-see-all-concurrency-bugs-in-the-debugger/},
booktitle = {33rd European Conference on Object-Oriented Programming},
day = 15,
doi = {10.4230/LIPIcs.ECOOP.2019.27},
interhash = {7c3a074d2fcba3978f74fa7279a15f3d},
intrahash = {4f1bc5cbd76622380f9f6f3b2ff2ad35},
isbn = {978-3-95977-111-5},
issn = {1868-8969},
keywords = {Actors AmbientTalk Concurrency Debugging FormalSemantics Formalism MeMyPublication Multiverse NonDeterminism Redex myown},
month = {July},
number = 27,
pages = {27:1--27:30},
pdf = {https://stefan-marr.de/downloads/ecoop19-torres-lopez-et-al-multiverse-debugging-non-deterministic-debugging-for-non-deterministic-programs.pdf},
publisher = {Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik},
series = {ECOOP'19},
timestamp = {2019-08-21T15:45:08.000+0200},
title = {{Multiverse Debugging: Non-deterministic Debugging for Non-deterministic Programs}},
volume = 134,
year = 2019
}