Atomicity is a key correctness specification for multithreaded programs. Prior dynamic atomicity analyses include precise tools, which report an error if and only if the observed trace is not serializable; and imprecise tools, which generalize from the observed trace to report errors that might occur on other traces, but which may also report false alarms. This paper presents SideTrack, a lightweight online dynamic analysis that generalizes from the observed trace without introducing the potential for false alarms. If SideTrack reports an error, then some feasible trace of the source program is not serializable. Experimental results show that this generalization ability increases the number of atomicity violations detected by SideTrack by 40%. Categories and Subject Descriptors D.2.4 [Software Engineering]: Software/Program Verification – reliability; D.2.5 [Software Engineering]: Testing and Debugging – testing tools; F.3.1 [Logics and Meanings of Programs]: Specifying and Veri...