@article{10.1145/3808248,
author = {Tun{\c c}, H{\"u}nkar Can and Dong, Yifan and Pavlogiannis, Andreas},
title = {Fast Atomicity Monitoring},
year = {2026},
issue_date = {June 2026},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
volume = {10},
number = {PLDI},
url = {https://doi.org/10.1145/3808248},
doi = {10.1145/3808248},
abstract = {Atomicity is a fundamental abstraction in concurrency, specifying that program behavior can be understood by considering specific code blocks executing atomically. However, atomicity invariants are tricky to maintain while also optimizing for code efficiency, and atomicity violations are a common root cause of many concurrency bugs. To address this problem, several dynamic techniques have been developed for testing whether a program execution adheres to an atomicity specification, most often instantiated as conflict serializability. The efficiency of the analysis has been targeted in various papers, with the state-of-the-art algorithms RegionTrack and Aerodrome achieving a time complexity O(nk3) and O(nk(k + v + ℓ)), respectively, for a trace σ of n events, k threads, v locations, and ℓ locks. In this paper we introduce AtomSanitizer, a new algorithm for testing conflict serializability, with time complexity O(nk2). AtomSanitizer operates in an efficient streaming style, is theoretically faster than all existing algorithms, and also has a smaller memory footprint. Moreover, AtomSanitizer is the first algorithm designed to incur minimal locking when deployed in a concurrent monitoring setting. Experiments on standard benchmarks indicate that AtomSanitizer is always faster in practice than all existing conflict-serializability testers. Finally, we also implement AtomSanitizer inside the TSAN framework, for monitoring atomicity in real time. Our experiments reveal that AtomSanitizer incurs minimal time and space overhead compared to the data-race detection engine of TSAN, and thus is the first algorithm for conflict serializability demonstrated to be suitable for a runtime monitoring setting.},
journal = {Proc. ACM Program. Lang.},
month = jun,
articleno = {170},
numpages = {24},
keywords = {concurrency, conflict serializability, dynamic runtime analysis, transactions}
}
