Capturing High-level Nondeterminism in Concurrent Programs for Practical Concurrency Model Agnostic Record Replay

02/26/2021
by   Dominik Aumayr, et al.
0

With concurrency being integral to most software systems, developers combine high-level concurrency models in the same application to tackle each problem with appropriate abstractions. While languages and libraries offer a wide range of concurrency models, debugging support for applications that combine them has not yet gained much attention. Record replay aids debugging by deterministically reproducing recorded bugs, but is typically designed for a single concurrency model only. This paper proposes a practical concurrency-model-agnostic record replay approach for multi-paradigm concurrent programs, i.e. applications that combine concurrency models. Our approach traces high-level nondeterministic events by using a uniform model-agnostic trace format and infrastructure. This enables orderingbased record replay support for a wide range of concurrency models, and thereby enables debugging of applications that combine them. In addition, it allows language implementors to add new concurrency models and reuse the model-agnostic record replay support. We argue that a concurrency-model-agnostic record replay is practical and enables advanced debugging support for a wide range of concurrency models. The evaluation shows that our approach is expressive and flexible enough to support record replay of applications using threads locks, communicating event loops, communicating sequential processes, software transactional memory and combinations of those concurrency models. For the actor model, we reach recording performance competitive with an optimized special-purpose record replay solution. The average recording overhead on the Savina actor benchmark suite is 10 max. 23 thereof is at a similar level. We believe our concurrency-model-agnostic approach helps developers of applications that mix and match concurrency models. We hope that this substrate inspires new tools and languages making building and maintaining of multi-paradigm concurrent applications simpler and safer.

READ FULL TEXT

page 12

page 29

page 30

research
05/16/2018

Efficient and Deterministic Record & Replay for Actor Languages

With the ubiquity of parallel commodity hardware, developers turn to hig...
research
06/01/2017

A Concurrency-Agnostic Protocol for Multi-Paradigm Concurrent Debugging Tools

Today's complex software systems combine high-level concurrency models. ...
research
04/04/2018

iReplayer: In-situ and Identical Record-and-Replay for Multithreaded Applications

Reproducing executions of multithreaded programs is very challenging due...
research
09/06/2019

Lightweight Record-and-Replay for Intermittent Tests Failures

In this paper we present lightweight record-and-replay (RR). In contrast...
research
07/11/2011

Efficient Deterministic Replay Using Complete Race Detection

Data races can significantly affect the executions of multi-threaded pro...
research
08/13/2023

Towards Efficient Record and Replay: A Case Study in WeChat

WeChat, a widely-used messenger app boasting over 1 billion monthly acti...
research
07/10/2018

Two-Phase Dynamic Analysis of Message-Passing Go Programs based on Vector Clocks

Understanding the run-time behavior of concurrent programs is a challeng...

Please sign up or login with your details

Forgot password? Click here to reset