
Departmental Papers (CIS)
Date of this Version
6-2007
Document Type
Conference Paper
Recommended Citation
Sebastian Burckhardt, Rajeev Alur, and Milo Martin, "CheckFence: Checking Consistency of Concurrent Data Types on Relaxed Memory Models", Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '07) , 12-21. June 2007. http://dx.doi.org/10.1145/1250734.1250737
Abstract
Concurrency libraries can facilitate the development of multithreaded programs by providing concurrent implementations of familiar data types such as queues or sets. There exist many optimized algorithms that can achieve superior performance on multiprocessors by allowing concurrent data accesses without using locks. Unfortunately, such algorithms can harbor subtle concurrency bugs. Moreover, they require memory ordering fences to function correctly on relaxed memory models. To address these difficulties, we propose a verification approach that can exhaustively check all concurrent executions of a given test program on a relaxed memory model and can verify that they are observationally equivalent to a sequential execution. Our Check- Fence prototype automatically translates the C implementation code and the test program into a SAT formula, hands the latter to a standard SAT solver, and constructs counterexample traces if there exist incorrect executions. Applying CheckFence to five previously published algorithms, we were able to (1) find several bugs (some not previously known), and (2) determine how to place memory ordering fences for relaxed memory models.
Subject Area
CPS Formal Methods
Publication Source
Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '07)
Start Page
12
Last Page
21
DOI
10.1145/1250734.1250737
Copyright/Permission Statement
© ACM 2007. This is the author's version of the work. It is posted here for your personal use. Not for redistribution. The definitive Version of Record was published in Proceedings of the 2007 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '07), http://dx.doi.org/10.1145/1250734.1250737.
Date Posted: 09 July 2012