Treffer: A Case Study for Reversible Computing: Reversible Debugging of Concurrent Programs

Title:
A Case Study for Reversible Computing: Reversible Debugging of Concurrent Programs
Contributors:
University of Leicester, Foundations of Component-based Ubiquitous Systems (FOCUS), Centre Inria d'Université Côte d'Azur, Institut National de Recherche en Informatique et en Automatique (Inria)-Institut National de Recherche en Informatique et en Automatique (Inria), Alma Mater Studiorum Università di Bologna = University of Bologna (UNIBO), Nagoya University, Universitat Politècnica de València = Universitad Politecnica de Valencia = Polytechnic University of Valencia (UPV), ANR-18-CE25-0007,DCore,Debogage causal pour systèmes concurrents(2018), European Project: COST Action IC1405,COST - European Cooperation in Science and Technology,IC1405(2015)
Source:
Reversible Computation: Extending Horizons of Computing - Selected Results of the COST Action IC1405 ; https://inria.hal.science/hal-03005383 ; Reversible Computation: Extending Horizons of Computing - Selected Results of the COST Action IC1405, pp.108 - 127, 2020, ⟨10.1007/978-3-030-47361-7_5⟩
Publisher Information:
CCSD
Publication Year:
2020
Document Type:
Buch book part
Language:
English
Relation:
info:eu-repo/grantAgreement//COST Action IC1405/EU/Reversible computation - extending horizons of computing /IC1405
DOI:
10.1007/978-3-030-47361-7_5
Rights:
info:eu-repo/semantics/OpenAccess
Accession Number:
edsbas.D0C830F2
Database:
BASE

Weitere Informationen

International audience ; Reversible computing allows one to run programs not only in the usual forward direction, but also backward. A main application area for reversible computing is debugging, where one can use reversibility to go backward from a visible misbehaviour towards the bug causing it. While reversible debugging of sequential systems is well understood, reversible debugging of concurrent and distributed systems is less settled. We present here two approaches for debugging concurrent programs, one based on backtracking, which undoes actions in reverse order of execution, and one based on causal consistency, which allows one to undo any action provided that its consequences, if any, are undone beforehand. The first approach tackles an imperative language with shared memory, while the second one considers a core of the functional message-passing language Erlang. Both the approaches are based on solid formal foundations.