The Complexity of Testing Message-Passing Concurrency
Zheng Shi, Lasse M{\o}ldrup, Umang Mathur, Andreas Pavlogiannis

TL;DR
This paper investigates the computational complexity of testing message-passing concurrency in modern programming languages, providing a detailed landscape of tractability and intractability based on various input parameters.
Contribution
It extends the study of consistency testing from shared-memory models to channel-based message-passing, establishing complexity bounds and algorithms for verification.
Findings
Complexity landscape includes polynomial upper bounds for fixed parameters.
Hardness results identify minimal parameters leading to intractability.
Algorithms are nearly optimal for verifying channel consistency.
Abstract
A key computational question underpinning the automated testing and verification of concurrent programs is the consistency question - given a partial execution history, can it be completed in a consistent manner? Due to its importance, consistency testing has been studied extensively for memory models, as well as for database isolation levels. A common theme in all these settings is the use of shared-memory as the primal mode of interthread communication. On the other hand, modern programming languages, such as Go, Rust and Kotlin, advocate a paradigm shift towards channel-based (i.e., message-passing) communication. However, the consistency question for channel-based concurrency is currently poorly understood. In this paper we lift the study of fundamental consistency problems to channels, taking into account various input parameters, such as the number of threads executing, the…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Formal Methods in Verification · Logic, programming, and type systems
