  With the ubiquity of parallel commodity hardware, developers turn to
high-level concurrency models such as the actor model to lower the complexity
of concurrent software. However, debugging concurrent software is hard,
especially for concurrency models with a limited set of supporting tools. Such
tools often deal only with the underlying threads and locks, which is at the
wrong abstraction level and may even introduce additional complexity. To
improve on this situation, we present a low-overhead record & replay approach
for actor languages. It allows one to debug concurrency issues
deterministically based on a previously recorded trace. Our evaluation shows
that the average run-time overhead for tracing on benchmarks from the Savina
suite is 10% (min. 0%, max. 20%). For Acme-Air, a modern web application, we
see a maximum increase of 1% in latency for HTTP requests and about 1.4 MB/s of
trace data. These results are a first step towards deterministic replay
debugging of actor systems in production.
