You are here:
Publication details
Weak Memory Models as LLVM-to-LLVM Transformations
Authors | |
---|---|
Year of publication | 2016 |
Type | Article in Proceedings |
Conference | Mathematical and Engineering Methods in Computer Science - 10th International Doctoral Workshop |
MU Faculty or unit | |
Citation | |
Web | http://dx.doi.org/10.1007/978-3-319-29817-7_13 |
Doi | http://dx.doi.org/10.1007/978-3-319-29817-7_13 |
Field | Informatics |
Keywords | memory models; model checking |
Description | Data races are among the most difficult software bugs to discover. They arise from multiple threads accessing the same memory location, a situation which is often hard to discern from source code alone. Detection of such bugs is further complicated by individual CPUs’ use of relaxed memory models. As a matter of fact, proving absence of data races is a typical task for automated formal verification. In this paper, we present a new approach for verification of multi-threaded C and C++ programs under weakened memory models (using store buffer emulation), using an unmodified model checker that assumes Sequential Consistency. In our workflow, a C or C++ program is translated into LLVM bitcode, which is then automatically extended with store buffer emulation. After this transformation, the extended LLVM bitcode is model-checked against safety and/or liveness properties with our explicit-state model checker DIVINE. |
Related projects: |