Previously we presented  atomic sets , memory locations that share some consistency property, and  units of work , code fragments that preserve consistency of atomic sets on which they are declared. We also proposed  atomic-set serializability  as a correctness criterion for concurrent programs, stating that units of work must be serializable for each atomic set. We showed that a set of problematic data access patterns characterize executions that are not atomic-set serializable. Our criterion subsumes data races (single-location atomic sets) and serializability (all locations in one set).   In this paper, we present a dynamic analysis for detecting violations of atomic-set serializability. The analysis can be implemented efficiently, and does not depend on any specific synchronization mechanism. We implemented the analysis and evaluated it on a suite of real programs and benchmarks. We found a number of known errors as well as several problems not previously reported.
['Christian Hammer', 'Julian Dolby', 'Mandana Vaziri', 'Frank Tip']
Dynamic detection of atomic-set-serializability violations