Abstract
Dynamic data race detectors are valuable tools for testing and validating concurrent software, but to achieve good performance they are typically implemented using sophisticated concurrent algorithms. Thus, they are ironically prone to the exact same kind of concurrency bugs they are designed to detect. To address these problems, we have developed VerifiedFT, a clean slate redesign of the FastTrack race detector [19]. The VerifiedFT analysis provides the same precision guarantee as FastTrack, but is simpler to implement correctly and efficiently, enabling us to mechanically verify an implementation of its core algorithm using CIVL [27]. Moreover, VerifiedFT provides these correctness guarantees without sacrificing any performance over current state-of-the-art (but complex and unverified) FastTrack implementations for Java.
Supplemental Material
Available for Download
Supplement
- Martín Abadi, Cormac Flanagan, and Stephen N. Freund. 2006. Types for Safe Locking: Static Race Detection for Java. Transactions on Programming Languages and Systems 28, 2 (2006), 207--255. Google Scholar
Digital Library
- Rahul Agarwal and Scott D. Stoller. 2004. Type Inference for Parameterized Race-Free Java. In VMCAI. 149--160.Google Scholar
- Alexander Aiken and David Gay. 1998. Barrier Inference. In POPL. 243--354. Google Scholar
Digital Library
- Simone Atzeni, Ganesh Gopalakrishnan, Zvonimir Rakamaric, Dong H. Ahn, Ignacio Laguna, Martin Schulz, Gregory L. Lee, Joachim Protze, and Matthias S. Müller. 2016. ARCHER: Effectively Spotting Data Races in Large OpenMP Applications. In IPDPS. 53--62.Google Scholar
- Stephen M. Blackburn, Robin Garner, Chris Hoffmann, Asjad M. Khan, Kathryn S. McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z. Guyer, Martin Hirzel, Antony L. Hosking, Maria Jump, Han Bok Lee, J. Eliot B. Moss, Aashish Phansalkar, Darko Stefanovic, Thomas VanDrunen, Daniel von Dincklage, and Ben Wiedermann. 2006. The DaCapo benchmarks: Java benchmarking development and analysis. In OOPSLA. 169--190. Google Scholar
Digital Library
- Michael D. Bond, Katherine E. Coons, and Kathryn S. McKinley. 2010. PACER: proportional detection of data races. In PLDI. 255--268. Google Scholar
Digital Library
- Michael D. Bond, Milind Kulkarni, Man Cao, Minjia Zhang, Meisam Fathi Salmi, Swarnendu Biswas, Aritra Sengupta, and Jipeng Huang. 2013. OCTET: capturing and controlling cross-thread dependences efficiently. In OOPSLA. 693--712. Google Scholar
Digital Library
- Chandrasekhar Boyapati and Martin Rinard. 2001. A parameterized type system for race-free Java programs. In OOPSLA. 56--69. Google Scholar
Digital Library
- Cardelli, L. 1984. A Semantics of Multiple Inheritance. In Semantics of Data Types (Lecture Notes in Computer Science 173). Springer Verlag, Berlin. Google Scholar
Digital Library
- Chiyan Chen and Hongwei Xi. 2005. Combining programming with theorem proving. In ICFP. 66--77. Google Scholar
Digital Library
- Mark Christiaens and Koenraad De Bosschere. 2001. TRaDe: Data Race Detection for Java. In International Conference on Computational Science. 761--770. Google Scholar
Digital Library
- CIVL Distribution 2017. (2017). https://github.com/boogie-org/boogieGoogle Scholar
- Cormac Flanagan and Stephen N. Freund and James R. Wilcox 2017. VerifiedFT CIVL Implementation. (2017). https://github.com/boogie-org/boogie/blob/civl/Test/civl/verified-tt.bplGoogle Scholar
- DRD: a thread error detector 2014. (2014). http://valgrind.org/docs/manual/drd-manual.htmlGoogle Scholar
- Matthew B. Dwyer and Lori A. Clarke. 1994. Data Flow Analysis for Verifying Properties of Concurrent Programs. Technical Report 94-045. Department of Computer Science, University of Massachusetts at Amherst. Google Scholar
Digital Library
- Laura Effinger-Dean, Brandon Lucia, Luis Ceze, Dan Grossman, and Hans-Juergen Boehm. 2012. IFRit: interference-free regions for dynamic data-race detection. In OOPSLA. 467--484. Google Scholar
Digital Library
- Dawson R. Engler and Ken Ashcraft. 2003. RacerX: Effective, static detection of race conditions and deadlocks. In SOSP. Google Scholar
Digital Library
- John Erickson, Madanlal Musuvathi, Sebastian Burckhardt, and Kirk Olynyk. 2010. Effective Data-Race Detection for the Kernel. In OSDI. 151--162. Google Scholar
Digital Library
- Cormac Flanagan and Stephen N. Freund. 2009. FastTrack: Efficient and precise dynamic race detection. In PLDI. 121--133. Google Scholar
Digital Library
- Cormac Flanagan and Stephen N. Freund. 2010. FastTrack: efficient and precise dynamic race detection. Commun. ACM 53, 11 (2010), 93--101. Google Scholar
Digital Library
- Cormac Flanagan and Stephen N. Freund. 2010. The RoadRunner dynamic analysis framework for concurrent programs. In PASTE. 1--8. Google Scholar
Digital Library
- Cormac Flanagan and Stephen N. Freund. 2013. RedCard: Redundant Check Elimination for Dynamic Race Detectors. In ECOOP. 255--280. Google Scholar
Digital Library
- Cormac Flanagan, Stephen N. Freund, Marina Lifshin, and Shaz Qadeer. 2008. Types for atomicity: Static checking and inference for Java. ACM Trans. Program. Lang. Syst. 30, 4 (2008). Google Scholar
Digital Library
- Cormac Flanagan, Stephen N. Freund, and Shaz Qadeer. 2004. Exploiting purity for atomicity. In ISSTA. 221--231. Google Scholar
Digital Library
- Cormac Flanagan, Stephen N. Freund, and Shaz Qadeer. 2005. Exploiting Purity for Atomicity. IEEE Trans. Software Eng. 31, 4 (2005), 275--291. Google Scholar
Digital Library
- Dan Grossman. 2003. Type-Safe Multithreading in Cyclone. In Proceedings of the ACM Workshop on Types in Language Design and Implementation. 13--25. Google Scholar
Digital Library
- Chris Hawblitzel, Erez Petrank, Shaz Qadeer, and Serdar Tasiran. 2015. Automated and Modular Refinement Reasoning for Concurrent Programs. In CAV. 449--465.Google Scholar
- Chris Hawblitzel, Erez Petrank, Shaz Qadeer, and Serdar Tasiran. 2015. Automated and Modular Refinement Reasoning for Concurrent Programs. Technical Report MSR-TR-2015-8. Microsoft Research.Google Scholar
- Jeff Huang and Arun K. Rajagopalan. 2017. What's the Optimal Performance of Precise Dynamic Race Detection? - A Redundancy Perspective. In ECOOP. 15:1--15:22.Google Scholar
- Intel. 2018. Intel Inspector. (2018). http://software.intel.com/en-us/intel-inspector-xeGoogle Scholar
- Intel. 2018. Intel Inspector Issues and Limitations. (2018). http://software.intel.com/en-us/intel-inspector-2018-release-notes-issues-and-limitationsGoogle Scholar
- Java Grande Forum. 2017. Java Grande Benchmark Suite. (2017). http://www2.epcc.ed.ac.uk/computing/research_activities/jomp/grande.htmlGoogle Scholar
- Richard J. Lipton. 1975. Reduction: A Method of Proving Properties of Parallel Programs. Commun. ACM 18, 12 (1975), 717--721. Google Scholar
Digital Library
- William Mansky, Yuanfeng Peng, Steve Zdancewic, and Joseph Devietti. 2017. Verifying dynamic race detection. In Conference on Certified Programs and Proofs. 151--163. Google Scholar
Digital Library
- Jeremy Manson, William Pugh, and Sarita V. Adve. 2005. The Java memory model. In POPL. 378--391. Google Scholar
Digital Library
- Friedemann Mattern. 1988. Virtual Time and Global States of Distributed Systems. In Workshop on Parallel and Distributed Algorithms.Google Scholar
- The Coq development team. 2017. The Coq Reference Manual, version 8.6. http://coq.inria.frGoogle Scholar
- Mayur Naik, Alex Aiken, and John Whaley. 2006. Effective Static Race Detection for Java. In PLDI. 308--319. Google Scholar
Digital Library
- Hiroyasu Nishiyama. 2004. Detecting Data Races Using Dynamic Escape Analysis Based on Read Barrier. In Virtual Machine Research and Technology Symposium. 127--138. Google Scholar
Digital Library
- Robert O'Callahan and Jong-Deok Choi. 2003. Hybrid Dynamic Data Race Detection. In PPOPP. 167--178. Google Scholar
Digital Library
- Boris Petrov, Martin T. Vechev, Manu Sridharan, and Julian Dolby. 2012. Race detection for web applications. In PLDI. 251--262. Google Scholar
Digital Library
- Eli Pozniansky and Assaf Schuster. 2007. MultiRace: Efficient on-the-fly data race detection in multithreaded C++ programs. Concurrency and Computation: Practice and Experience 19, 3 (2007), 327--340. Google Scholar
Digital Library
- Raghavan Raman, Jisheng Zhao, Vivek Sarkar, Martin T. Vechev, and Eran Yahav. 2012. Scalable and precise dynamic datarace detection for structured parallelism. In PLDI. 531--542. Google Scholar
Digital Library
- Dustin Rhodes, Cormac Flanagan, and Stephen N. Freund. 2017. Big-Foot: Static check placement for dynamic race detection. In PLDI. 141--156. Google Scholar
Digital Library
- RoadRunner Team. 2016. RoadRunner Analysis Framework, Version 0.4. (2016). https://github.com/stephenfreund/RoadRunner/tree/618f3ae5a24f702719f6b6c0422fc1a488cf16bfGoogle Scholar
- RoadRunner Team. 2016. RoadRunner GitHub Source Code Commit 54ae0b0. (2016). https://github.com/stephenfreund/RoadRunner/tree/b1d39a192e6e2330a95408c7e4030f85354ae0b0Google Scholar
- RoadRunner Team. 2016. RoadRunner GitHub Source Code Commit 8b2e9a7. (2016). https://github.com/stephenfreund/RoadRunner/tree/a1f547350e90e7092a21dd1d95b1714528b2e9a7Google Scholar
- Caitlin Sadowski, Jaeheon Yi, Kenneth Knowles, and Cormac Flanagan. 2008. Proving correctness of a dynamic atomicity analysis in Coq. In Workshop on Mechanizing Metatheory, Vol. 8.Google Scholar
- Stefan Savage, Michael Burrows, Greg Nelson, Patrick Sobalvarro, and Thomas E. Anderson. 1997. Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs. TOCS 15, 4 (1997), 391--411. Google Scholar
Digital Library
- Edith Schonberg. 1989. On-The-Fly Detection of Access Anomalies. In PLDI. 285--297. Google Scholar
Digital Library
- Konstantin Serebryany and Timur Iskhodzhanov. 2009. ThreadSanitizer: Data Race Detection in Practice. In Proceedings of the Workshop on Binary Instrumentation and Applications. 62--71. Google Scholar
Digital Library
- Konstantin Serebryany, Alexander Potapenko, Timur Iskhodzhanov, and Dmitriy Vyukov. 2011. Dynamic Race Detection with LLVM Compiler - Compile-Time Instrumentation for ThreadSanitizer. In RV. 110--114. Google Scholar
Digital Library
- Young Wn Song and Yann-Hang Lee. 2014. Efficient Data Race Detection for C/C++ Programs Using Dynamic Granularity. In 2014 IEEE 28th International Parallel and Distributed Processing Symposium. 679--688. Google Scholar
Digital Library
- ThreadSanitizer 2018. ThreadSanitizer. (2018). http://clang.llvm.org/docs/ThreadSanitizer.htmlGoogle Scholar
- Christoph von Praun and Thomas Gross. 2001. Object Race Detection. In OOPSLA. 70--82. Google Scholar
Digital Library
- Jan Wen Voung, Ranjit Jhala, and Sorin Lerner. 2007. RELAY: static race detection on millions of lines of code. In FSE. 205--214. Google Scholar
Digital Library
- Liqiang Wang and Scott D. Stoller. 2005. Static analysis of atomicity for programs with non-blocking synchronization. In PPOPP. 61--71. Google Scholar
Digital Library
- James R. Wilcox, Parker Finch, Cormac Flanagan, and Stephen N. Freund. 2015. Array Shadow State Compression for Precise Dynamic Race Detection. In ASE. 155--165.Google Scholar
- Xinwei Xie and Jingling Xue. 2011. Acculock: Accurate and efficient detection of data races. In CGO. 201--212. Google Scholar
Digital Library
- Yuan Yu, Tom Rodeheffer, and Wei Chen. 2005. RaceTrack: Efficient detection of data race conditions via adaptive tracking. In SOSP. 221--234. Google Scholar
Digital Library
Index Terms
VerifiedFT: a verified, high-performance precise dynamic race detector
Recommendations
VerifiedFT: a verified, high-performance precise dynamic race detector
PPoPP '18: Proceedings of the 23rd ACM SIGPLAN Symposium on Principles and Practice of Parallel ProgrammingDynamic data race detectors are valuable tools for testing and validating concurrent software, but to achieve good performance they are typically implemented using sophisticated concurrent algorithms. Thus, they are ironically prone to the exact same ...
Valor: efficient, software-only region conflict exceptions
OOPSLA 2015: Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and ApplicationsData races complicate programming language semantics, and a data race is often a bug. Existing techniques detect data races and define their semantics by detecting conflicts between synchronization-free regions (SFRs). However, such techniques either ...
Valor: efficient, software-only region conflict exceptions
OOPSLA '15Data races complicate programming language semantics, and a data race is often a bug. Existing techniques detect data races and define their semantics by detecting conflicts between synchronization-free regions (SFRs). However, such techniques either ...







Comments