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%.
- 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 Scholar
Digital Library
- Rahul Agarwal and Scott D. Stoller. Type inference for parameterized race-free Java. In VMCAI, pages 149–160, 2004.Google Scholar
Cross Ref
- Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools (2nd Edition). 2006. Google Scholar
Digital Library
- Alexander Aiken and David Gay. Barrier inference. In POPL, pages 243–354, 1998. Google Scholar
Digital Library
- Swarnendu Biswas, Minjia Zhang, Michael D. Bond, and Brandon Lucia. Valor: efficient, software-only region conflict exceptions. In OOPSLA, pages 241–259, 2015. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Michael D. Bond, Katherine E. Coons, and Kathryn S. McKinley. Pacer: Proportional detection of data races. In PLDI, 2010. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Chandrasekhar Boyapati and Martin Rinard. A parameterized type system for race-free Java programs. In OOPSLA, pages 56–69, 2001. Google Scholar
Digital Library
- Cardelli, L. A semantics of multiple inheritance. In Semantics of Data Types, Lecture Notes in Computer Science 173, Berlin, 1984. Springer Verlag. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Chiyan Chen and Hongwei Xi. Combining programming with theorem proving. In ICFP, pages 66–77, 2005. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Mark Christiaens and Koenraad De Bosschere. TRaDe: Data Race Detection for Java. In International Conference on Computational Science, pages 761–770, 2001. Google Scholar
Digital Library
- Leonardo Mendonça de Moura and Nikolaj Bjørner. Z3: An efficient SMT solver. In TACAS, pages 337–340, 2008.Google Scholar
Cross Ref
- DRD 2014. DRD: a thread error detector. Available at http://valgrind.org/docs/manual/drd/manual.html, 2014.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Dawson R. Engler and Ken Ashcraft. RacerX: Effective, static detection of race conditions and deadlocks. In SOSP, 2003. Google Scholar
Digital Library
- John Erickson, Madanlal Musuvathi, Sebastian Burckhardt, and Kirk Olynyk. Effective data-race detection for the kernel. In OSDI, pages 151–162, 2010. Google Scholar
Digital Library
- Cormac Flanagan and Stephen N. Freund. FastTrack: Efficient and precise dynamic race detection. In PLDI, pages 121–133, 2009. Google Scholar
Digital Library
- Cormac Flanagan and Stephen N. Freund. The RoadRunner dynamic analysis framework for concurrent programs. In PASTE, pages 1–8, 2010. Google Scholar
Digital Library
- Cormac Flanagan and Stephen N. Freund. RedCard: Redundant check elimination for dynamic race detectors. In ECOOP, pages 255–280, 2013. Google Scholar
Digital Library
- Cormac Flanagan and Shaz Qadeer. Predicate abstraction for software verification. In POPL, pages 191–202, 2002. Google Scholar
Digital Library
- Cormac Flanagan, Amr Sabry, Bruce F. Duba, and Matthias Felleisen. The essence of compiling with continuations. In PLDI, pages 237–247, 1993. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- James Gosling, Bill Joy, Guy Steele, Gilad Bracha, and Alex Buckle. The Java Language Specification, Java SE 8 Edition. 2015. Google Scholar
Digital Library
- Susanne Graf and Hassen Saidi. Construction of abstract state graphs with PVS. In CAV, pages 72–83, 1997. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Java Grande Forum. Java Grande benchmark suite. Available at http://www.javagrande.org/, 2008.Google Scholar
- Leslie Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7):558–565, 1978. Google Scholar
Digital Library
- Jeremy Manson, William Pugh, and Sarita V. Adve. The Java memory model. In POPL, pages 378–391, 2005. Google Scholar
Digital Library
- Friedemann Mattern. Virtual time and global states of distributed systems. In Workshop on Parallel and Distributed Algorithms, 1988.Google Scholar
- 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 Scholar
Digital Library
- Mayur Naik, Alex Aiken, and John Whaley. Effective static race detection for Java. In PLDI, pages 308–319, 2006. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Robert O’Callahan and Jong-Deok Choi. Hybrid dynamic data race detection. In PPOPP, 2003. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- William Pugh. The Omega test: a fast and practical integer programming algorithm for dependence analysis. In Supercomputing, pages 4–13, 1991. Google Scholar
Digital Library
- 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 Scholar
- Michiel Ronsse and Koenraad De Bosschere. RecPlay: A fully integrated practical record/replay system. TCS, 17(2):133–152, 1999. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Edith Schonberg. On-the-fly detection of access anomalies. In PLDI, pages 285–297, 1989. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Nir Shavit and Dan Touitou. Software transactional memory. In ACM Symposium on Principles of Distributed Computing, pages 204–213, 1995. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Christoph von Praun and Thomas Gross. Object race detection. In OOPSLA, 2001. Google Scholar
Digital Library
- Christoph von Praun and Thomas Gross. Static conflict analysis for multi-threaded object-oriented programs. In PLDI, pages 115–128, 2003. Google Scholar
Digital Library
- 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 Scholar
- WALA. T.J. Watson Libraries for Analysis (WALA). Available at http://github.com/wala, 2016.Google Scholar
- 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 Scholar
Digital Library
- Michael Wolfe. Beyond induction variables. In PLDI, pages 162–174, 1992. Google Scholar
Digital Library
- Xinwei Xie and Jingling Xue. Acculock: Accurate and efficient detection of data races. In CGO, pages 201–212, 2011. Google Scholar
Digital Library
- Eran Yahav. Verifying safety properties of concurrent Java programs using 3-valued logic. In POPL, pages 27–40, 2001. Google Scholar
Digital Library
- Yuan Yu, Tom Rodeheffer, and Wei Chen. RaceTrack: Efficient detection of data race conditions via adaptive tracking. In SOSP, pages 221–234, 2005. Google Scholar
Digital Library
Index Terms
BigFoot: static check placement for dynamic race detection
Recommendations
BigFoot: static check placement for dynamic race detection
PLDI 2017: Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and ImplementationPrecise 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 ...
Accelerating Dynamic Data Race Detection Using Static Thread Interference Analysis
PMAM'16: Proceedings of the 7th International Workshop on Programming Models and Applications for Multicores and ManycoresPrecise dynamic race detectors report an error if and only if more than one thread concurrently exhibits conflict on a memory access. They insert instrumentations at compile-time to perform runtime checks on all memory accesses to ensure that all races ...
Synthesizing racy tests
PLDI '15: Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and ImplementationSubtle concurrency errors in multithreaded libraries that arise because of incorrect or inadequate synchronization are often difficult to pinpoint precisely using only static techniques. On the other hand, the effectiveness of dynamic race detectors is ...






Comments