Causal-Consistent Replay Reversible Semantics for Message Passing Concurrent Programs

[EN] Causal-consistent reversible debugging is an innovative technique for debugging concurrent systems. It allows one to go back in the execution focusing on the actions that most likely caused a visible misbehavior. When such an action is selected, the debugger undoes it, including all and only it...

Descripción completa

Detalles Bibliográficos
Autores: Lanese, Ivan, Palacios, Adrián, Vidal, Germán|||0000-0002-1857-6951
Tipo de recurso: artículo
Fecha de publicación:2021
País:España
Institución:Universitat Politècnica de València (UPV)
Repositorio:RiuNet. Repositorio Institucional de la Universitat Politécnica de Valéncia
Idioma:inglés
OAI Identifier:oai:riunet.upv.es:10251/183893
Acceso en línea:https://riunet.upv.es/handle/10251/183893
Access Level:acceso abierto
Palabra clave:Concurrency
Logging
Causal-consistent
Debugging
Reversible computing
LENGUAJES Y SISTEMAS INFORMATICOS
Descripción
Sumario:[EN] Causal-consistent reversible debugging is an innovative technique for debugging concurrent systems. It allows one to go back in the execution focusing on the actions that most likely caused a visible misbehavior. When such an action is selected, the debugger undoes it, including all and only its consequences. This operation is called a causal-consistent rollback. In this way, the user can avoid being distracted by the actions of other, unrelated processes. In this work, we introduce its dual notion: causal-consistent replay. We allow the user to record an execution of a running program and, in contrast to traditional replay debuggers, to reproduce a visible misbehavior inside the debugger including all and only its causes. Furthermore, we present a unified framework that combines both causal-consistent replay and causal-consistent rollback. Although most of the ideas that we present are rather general, we focus on a popular functional and concurrent programming language based on message passing: Erlang.