skip to main content
article
Public Access

BigFoot: static check placement for dynamic race detection

Published:14 June 2017Publication History
Skip Abstract Section

Abstract

Precise dynamic data race detectors provide strong correctness guarantees but have high overheads because they generally keep analysis state in a separate shadow location for each heap memory location, and they check (and potentially update) the corresponding shadow location on each heap access. The BigFoot dynamic data race detector uses a combination of static and dynamic analysis techniques to coalesce checks and compress shadow locations. With BigFoot, multiple accesses to an object or array often induce a single coalesced check that manipulates a single compressed shadow location, resulting in a performance improvement over FastTrack of 61%.

References

  1. Martín Abadi, Cormac Flanagan, and Stephen N. Freund. Types for safe locking: Static race detection for Java. Transactions on Programming Languages and Systems, 28(2):207–255, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Rahul Agarwal and Scott D. Stoller. Type inference for parameterized race-free Java. In VMCAI, pages 149–160, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  3. Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools (2nd Edition). 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Alexander Aiken and David Gay. Barrier inference. In POPL, pages 243–354, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Swarnendu Biswas, Minjia Zhang, Michael D. Bond, and Brandon Lucia. Valor: efficient, software-only region conflict exceptions. In OOPSLA, pages 241–259, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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. The DaCapo benchmarks: Java benchmarking development and analysis. In OOPSLA, pages 169–190, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Eric Bodden, Andreas Sewe, Jan Sinschek, Hela Oueslati, and Mira Mezini. Taming reflection: Aiding static analysis in the presence of reflection and custom class loaders. In ICSE, pages 241–250, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Michael D. Bond, Katherine E. Coons, and Kathryn S. McKinley. Pacer: Proportional detection of data races. In PLDI, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Michael D. Bond, Milind Kulkarni, Man Cao, Minjia Zhang, Meisam Fathi Salmi, Swarnendu Biswas, Aritra Sengupta, and Jipeng Huang. OCTET: capturing and controlling cross-thread dependences efficiently. In OOPSLA, pages 693–712, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Chandrasekhar Boyapati and Martin Rinard. A parameterized type system for race-free Java programs. In OOPSLA, pages 56–69, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Cardelli, L. A semantics of multiple inheritance. In Semantics of Data Types, Lecture Notes in Computer Science 173, Berlin, 1984. Springer Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. A. T. Chamillard, Lori A. Clarke, and George S. Avrunin. An empirical comparison of static concurrency analysis techniques. Technical Report 96-084, Department of Computer Science, University of Massachusetts at Amherst, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Chiyan Chen and Hongwei Xi. Combining programming with theorem proving. In ICFP, pages 66–77, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Jong-Deok Choi, Keunwoo Lee, Alexey Loginov, Robert O’Callahan, Vivek Sarkar, and Manu Sridhara. Efficient and precise datarace detection for multithreaded object-oriented programs. In PLDI, pages 258–269, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Mark Christiaens and Koenraad De Bosschere. TRaDe: Data Race Detection for Java. In International Conference on Computational Science, pages 761–770, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Leonardo Mendonça de Moura and Nikolaj Bjørner. Z3: An efficient SMT solver. In TACAS, pages 337–340, 2008.Google ScholarGoogle ScholarCross RefCross Ref
  17. DRD 2014. DRD: a thread error detector. Available at http://valgrind.org/docs/manual/drd/manual.html, 2014.Google ScholarGoogle Scholar
  18. Matthew B. Dwyer and Lori A. Clarke. Data flow analysis for verifying properties of concurrent programs. Technical Report 94-045, Department of Computer Science, University of Massachusetts at Amherst, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Laura Effinger-Dean, Hans-Juergen Boehm, Dhruva R. Chakrabarti, and Pramod G. Joisha. Extended sequential reasoning for data-race-free programs. In MSPC, pages 22–29, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Laura Effinger-Dean, Brandon Lucia, Luis Ceze, Dan Grossman, and Hans-Juergen Boehm. IFRit: interference-free regions for dynamic data-race detection. In OOPSLA, pages 467–484, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Dawson R. Engler and Ken Ashcraft. RacerX: Effective, static detection of race conditions and deadlocks. In SOSP, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. John Erickson, Madanlal Musuvathi, Sebastian Burckhardt, and Kirk Olynyk. Effective data-race detection for the kernel. In OSDI, pages 151–162, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Cormac Flanagan and Stephen N. Freund. FastTrack: Efficient and precise dynamic race detection. In PLDI, pages 121–133, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Cormac Flanagan and Stephen N. Freund. The RoadRunner dynamic analysis framework for concurrent programs. In PASTE, pages 1–8, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Cormac Flanagan and Stephen N. Freund. RedCard: Redundant check elimination for dynamic race detectors. In ECOOP, pages 255–280, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Cormac Flanagan and Shaz Qadeer. Predicate abstraction for software verification. In POPL, pages 191–202, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Cormac Flanagan, Amr Sabry, Bruce F. Duba, and Matthias Felleisen. The essence of compiling with continuations. In PLDI, pages 237–247, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Michael P. Gerlek, Eric Stoltz, and Michael Wolfe. Beyond induction variables: Detecting and classifying sequences using a demand-driven SSA. Transactions on Programming Languages and Systems, 17(1):85–122, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. James Gosling, Bill Joy, Guy Steele, Gilad Bracha, and Alex Buckle. The Java Language Specification, Java SE 8 Edition. 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Susanne Graf and Hassen Saidi. Construction of abstract state graphs with PVS. In CAV, pages 72–83, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Dan Grossman. Type-safe multithreading in Cyclone. In Proceedings of the ACM Workshop on Types in Language Design and Implementation, pages 13–25, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Java Grande Forum. Java Grande benchmark suite. Available at http://www.javagrande.org/, 2008.Google ScholarGoogle Scholar
  33. Leslie Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7):558–565, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Jeremy Manson, William Pugh, and Sarita V. Adve. The Java memory model. In POPL, pages 378–391, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Friedemann Mattern. Virtual time and global states of distributed systems. In Workshop on Parallel and Distributed Algorithms, 1988.Google ScholarGoogle Scholar
  36. Madanlal Musuvathi, Shaz Qadeer, Thomas Ball, Gerard Basler, Piramanayagam Arumuga Nainar, and Iulian Neamtiu. Finding and reproducing heisenbugs in concurrent programs. In OSDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Mayur Naik, Alex Aiken, and John Whaley. Effective static race detection for Java. In PLDI, pages 308–319, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Hiroyasu Nishiyama. Detecting data races using dynamic escape analysis based on read barrier. In Virtual Machine Research and Technology Symposium, pages 127–138, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Robert O’Callahan and Jong-Deok Choi. Hybrid dynamic data race detection. In PPOPP, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Eli Pozniansky and Assaf Schuster. MultiRace: Efficient onthe-fly data race detection in multithreaded C++ programs. Concurrency and Computation: Practice and Experience, 19 (3):327–340, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. William Pugh. The Omega test: a fast and practical integer programming algorithm for dependence analysis. In Supercomputing, pages 4–13, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Dustin Rhodes, Cormac Flanagan, and Stephen N. Freund. BigFoot: Static check placement for dynamic race detection. Technical Report CSTR-201702, Williams College, 2017. Available at http://www.cs.williams.edu/ ~freund/papers/bigfoot-tr.pdf.Google ScholarGoogle Scholar
  43. Michiel Ronsse and Koenraad De Bosschere. RecPlay: A fully integrated practical record/replay system. TCS, 17(2):133–152, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Stefan Savage, Michael Burrows, Greg Nelson, Patrick Sobalvarro, and Thomas E. Anderson. Eraser: A dynamic data race detector for multi-threaded programs. TOCS, 15(4):391–411, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Edith Schonberg. On-the-fly detection of access anomalies. In PLDI, pages 285–297, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Konstantin Serebryany and Timur Iskhodzhanov. ThreadSanitizer: Data race detection in practice. In Proceedings of the Workshop on Binary Instrumentation and Applications, pages 62–71, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Konstantin Serebryany, Alexander Potapenko, Timur Iskhodzhanov, and Dmitriy Vyukov. Dynamic race detection with LLVM compiler - compile-time instrumentation for ThreadSanitizer. In RV, pages 110–114, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Nir Shavit and Dan Touitou. Software transactional memory. In ACM Symposium on Principles of Distributed Computing, pages 204–213, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Young Wn Song and Yann-Hang Lee. Efficient data race detection for C/C++ programs using dynamic granularity. In 2014 IEEE 28th International Parallel and Distributed Processing Symposium, pages 679–688, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Raja Vallée-Rai, Phong Co, Etienne Gagnon, Laurie J. Hendren, Patrick Lam, and Vijay Sundaresan. Soot - a java bytecode optimization framework. In Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative Research, November 8-11, 1999, Mississauga, Ontario, Canada, page 13, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Christoph von Praun and Thomas Gross. Object race detection. In OOPSLA, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Christoph von Praun and Thomas Gross. Static conflict analysis for multi-threaded object-oriented programs. In PLDI, pages 115–128, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Jan Wen Voung, Ranjit Jhala, and Sorin Lerner. Relay: static race detection on millions of lines of code. In FSE, pages 205–214, 2007.Google ScholarGoogle Scholar
  54. WALA. T.J. Watson Libraries for Analysis (WALA). Available at http://github.com/wala, 2016.Google ScholarGoogle Scholar
  55. James R. Wilcox, Parker Finch, Cormac Flanagan, and Stephen N. Freund. Array shadow state compression for precise dynamic race detection. In ASE, pages 155–165, 2015.Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. Michael Wolfe. Beyond induction variables. In PLDI, pages 162–174, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Xinwei Xie and Jingling Xue. Acculock: Accurate and efficient detection of data races. In CGO, pages 201–212, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Eran Yahav. Verifying safety properties of concurrent Java programs using 3-valued logic. In POPL, pages 27–40, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Yuan Yu, Tom Rodeheffer, and Wei Chen. RaceTrack: Efficient detection of data race conditions via adaptive tracking. In SOSP, pages 221–234, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. BigFoot: static check placement for dynamic race detection

        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

        • Published in

          cover image ACM SIGPLAN Notices
          ACM SIGPLAN Notices  Volume 52, Issue 6
          PLDI '17
          June 2017
          708 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/3140587
          Issue’s Table of Contents
          • cover image ACM Conferences
            PLDI 2017: Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation
            June 2017
            708 pages
            ISBN:9781450349888
            DOI:10.1145/3062341

          Copyright © 2017 ACM

          Publisher

          Association for Computing Machinery

          New York, NY, United States

          Publication History

          • Published: 14 June 2017

          Check for updates

          Qualifiers

          • article

        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!