skip to main content

VerifiedFT: a verified, high-performance precise dynamic race detector

Published:10 February 2018Publication History
Skip Abstract Section

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.

Skip Supplemental Material Section

Supplemental Material

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. Rahul Agarwal and Scott D. Stoller. 2004. Type Inference for Parameterized Race-Free Java. In VMCAI. 149--160.Google ScholarGoogle Scholar
  3. Alexander Aiken and David Gay. 1998. Barrier Inference. In POPL. 243--354. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle Scholar
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. Michael D. Bond, Katherine E. Coons, and Kathryn S. McKinley. 2010. PACER: proportional detection of data races. In PLDI. 255--268. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. Chandrasekhar Boyapati and Martin Rinard. 2001. A parameterized type system for race-free Java programs. In OOPSLA. 56--69. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Cardelli, L. 1984. A Semantics of Multiple Inheritance. In Semantics of Data Types (Lecture Notes in Computer Science 173). Springer Verlag, Berlin. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Chiyan Chen and Hongwei Xi. 2005. Combining programming with theorem proving. In ICFP. 66--77. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Mark Christiaens and Koenraad De Bosschere. 2001. TRaDe: Data Race Detection for Java. In International Conference on Computational Science. 761--770. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. CIVL Distribution 2017. (2017). https://github.com/boogie-org/boogieGoogle ScholarGoogle Scholar
  13. 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 ScholarGoogle Scholar
  14. DRD: a thread error detector 2014. (2014). http://valgrind.org/docs/manual/drd-manual.htmlGoogle ScholarGoogle Scholar
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  17. Dawson R. Engler and Ken Ashcraft. 2003. RacerX: Effective, static detection of race conditions and deadlocks. In SOSP. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. John Erickson, Madanlal Musuvathi, Sebastian Burckhardt, and Kirk Olynyk. 2010. Effective Data-Race Detection for the Kernel. In OSDI. 151--162. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Cormac Flanagan and Stephen N. Freund. 2009. FastTrack: Efficient and precise dynamic race detection. In PLDI. 121--133. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Cormac Flanagan and Stephen N. Freund. 2010. FastTrack: efficient and precise dynamic race detection. Commun. ACM 53, 11 (2010), 93--101. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Cormac Flanagan and Stephen N. Freund. 2010. The RoadRunner dynamic analysis framework for concurrent programs. In PASTE. 1--8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Cormac Flanagan and Stephen N. Freund. 2013. RedCard: Redundant Check Elimination for Dynamic Race Detectors. In ECOOP. 255--280. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  24. Cormac Flanagan, Stephen N. Freund, and Shaz Qadeer. 2004. Exploiting purity for atomicity. In ISSTA. 221--231. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Cormac Flanagan, Stephen N. Freund, and Shaz Qadeer. 2005. Exploiting Purity for Atomicity. IEEE Trans. Software Eng. 31, 4 (2005), 275--291. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Dan Grossman. 2003. Type-Safe Multithreading in Cyclone. In Proceedings of the ACM Workshop on Types in Language Design and Implementation. 13--25. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Chris Hawblitzel, Erez Petrank, Shaz Qadeer, and Serdar Tasiran. 2015. Automated and Modular Refinement Reasoning for Concurrent Programs. In CAV. 449--465.Google ScholarGoogle Scholar
  28. 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 ScholarGoogle Scholar
  29. 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 ScholarGoogle Scholar
  30. Intel. 2018. Intel Inspector. (2018). http://software.intel.com/en-us/intel-inspector-xeGoogle ScholarGoogle Scholar
  31. Intel. 2018. Intel Inspector Issues and Limitations. (2018). http://software.intel.com/en-us/intel-inspector-2018-release-notes-issues-and-limitationsGoogle ScholarGoogle Scholar
  32. Java Grande Forum. 2017. Java Grande Benchmark Suite. (2017). http://www2.epcc.ed.ac.uk/computing/research_activities/jomp/grande.htmlGoogle ScholarGoogle Scholar
  33. Richard J. Lipton. 1975. Reduction: A Method of Proving Properties of Parallel Programs. Commun. ACM 18, 12 (1975), 717--721. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. William Mansky, Yuanfeng Peng, Steve Zdancewic, and Joseph Devietti. 2017. Verifying dynamic race detection. In Conference on Certified Programs and Proofs. 151--163. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Jeremy Manson, William Pugh, and Sarita V. Adve. 2005. The Java memory model. In POPL. 378--391. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Friedemann Mattern. 1988. Virtual Time and Global States of Distributed Systems. In Workshop on Parallel and Distributed Algorithms.Google ScholarGoogle Scholar
  37. The Coq development team. 2017. The Coq Reference Manual, version 8.6. http://coq.inria.frGoogle ScholarGoogle Scholar
  38. Mayur Naik, Alex Aiken, and John Whaley. 2006. Effective Static Race Detection for Java. In PLDI. 308--319. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Hiroyasu Nishiyama. 2004. Detecting Data Races Using Dynamic Escape Analysis Based on Read Barrier. In Virtual Machine Research and Technology Symposium. 127--138. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Robert O'Callahan and Jong-Deok Choi. 2003. Hybrid Dynamic Data Race Detection. In PPOPP. 167--178. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Boris Petrov, Martin T. Vechev, Manu Sridharan, and Julian Dolby. 2012. Race detection for web applications. In PLDI. 251--262. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  43. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  44. Dustin Rhodes, Cormac Flanagan, and Stephen N. Freund. 2017. Big-Foot: Static check placement for dynamic race detection. In PLDI. 141--156. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. RoadRunner Team. 2016. RoadRunner Analysis Framework, Version 0.4. (2016). https://github.com/stephenfreund/RoadRunner/tree/618f3ae5a24f702719f6b6c0422fc1a488cf16bfGoogle ScholarGoogle Scholar
  46. RoadRunner Team. 2016. RoadRunner GitHub Source Code Commit 54ae0b0. (2016). https://github.com/stephenfreund/RoadRunner/tree/b1d39a192e6e2330a95408c7e4030f85354ae0b0Google ScholarGoogle Scholar
  47. RoadRunner Team. 2016. RoadRunner GitHub Source Code Commit 8b2e9a7. (2016). https://github.com/stephenfreund/RoadRunner/tree/a1f547350e90e7092a21dd1d95b1714528b2e9a7Google ScholarGoogle Scholar
  48. 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 ScholarGoogle Scholar
  49. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  50. Edith Schonberg. 1989. On-The-Fly Detection of Access Anomalies. In PLDI. 285--297. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  52. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  53. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  54. ThreadSanitizer 2018. ThreadSanitizer. (2018). http://clang.llvm.org/docs/ThreadSanitizer.htmlGoogle ScholarGoogle Scholar
  55. Christoph von Praun and Thomas Gross. 2001. Object Race Detection. In OOPSLA. 70--82. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Jan Wen Voung, Ranjit Jhala, and Sorin Lerner. 2007. RELAY: static race detection on millions of lines of code. In FSE. 205--214. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Liqiang Wang and Scott D. Stoller. 2005. Static analysis of atomicity for programs with non-blocking synchronization. In PPOPP. 61--71. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. 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 ScholarGoogle Scholar
  59. Xinwei Xie and Jingling Xue. 2011. Acculock: Accurate and efficient detection of data races. In CGO. 201--212. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Yuan Yu, Tom Rodeheffer, and Wei Chen. 2005. RaceTrack: Efficient detection of data race conditions via adaptive tracking. In SOSP. 221--234. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. VerifiedFT: a verified, high-performance precise dynamic race detector

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader
          About Cookies On This Site

          We use cookies to ensure that we give you the best experience on our website.

          Learn more

          Got it!