Fine-grained Causal Reversibility for Asynchronous Channel-based Programming

📅 2026-08-29
📈 Citations: 0
Influential: 0
📄 PDF
🤖 AI Summary
本文提出revGo,通过分析消息间的因果依赖关系并重新排序独立消息,以实现高效回滚和重放,解决异步通信中因队列依赖导致的调试难题。
📝 Abstract
Causal reversibility has emerged as an effective technique for debugging concurrent systems. In particular, rolling back and replaying a concurrent program with causal consistency has been found very helpful in debugging concurrency bugs. In channel-based communication, queue ordering creates dependencies that prevent causally independent actions from being rolled back and replayed. To enable efficient rollback and replay without being constrained by queue dependencies, it is necessary to analyse causal dependencies between messages in queues and reorder independent messages. This paper presents revGo, a core of the Go programming language assuming unbounded asynchronous channels. Our rollback-and-replay semantics allows us to reorder messages in the queue if they are not causally related in the forward execution. It is shown that reordering independent messages generates no configuration with non-reachable processes. By reordering independent messages, rollback and replay are implementable with minimality by assigning unique keys to communications.
Problem

Research questions and friction points this paper is trying to address.

causal reversibility
concurrent systems
asynchronous channels
queue dependencies
debugging
Innovation

Methods, ideas, or system contributions that make the work stand out.

causal reversibility
asynchronous channels
message reordering
rollback-and-replay semantics
🔎 Similar Papers