  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% (min. 0%,
max. 23%). The performance for other concurrency models and combinations
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.
