skip to main content
10.1145/1542476.1542490acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

FastTrack: efficient and precise dynamic race detection

Published:15 June 2009Publication History

ABSTRACT

\begin{abstract}

Multithreaded programs are notoriously prone to race conditions. Prior work on dynamic race detectors includes fast but imprecise race detectors that report false alarms, as well as slow but precise race detectors that never report false alarms. The latter typically use expensive vector clock operations that require time linear in the number of program threads.

This paper exploits the insight that the full generality of vector clocks is unnecessary in most cases. That is, we can replace heavyweight vector clocks with an adaptive lightweight representation that, for almost all operations of the target program, requires only constant space and supports constant-time operations. This representation change significantly improves time and space performance, with no loss in precision.

Experimental results on Java benchmarks including the Eclipse development environment show that our FastTrack race detector is an order of magnitude faster than a traditional vector-clock race detector, and roughly twice as fast as the high-performance DJIT+ algorithm. FastTrack is even comparable in speed to Eraser on our Java benchmarks, while never reporting false alarms.

References

  1. M. Abadi, C. Flanagan, and S. N. Freund. Types for safe locking: Static race detection for Java. TOPLAS, 28(2):207--255, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. S. V. Adve, M. D. Hill, B. P. Miller, and R. H. B. Netzer. Detecting data races on weak memory systems. In ISCA, pages 234--243, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. R. Agarwal and S. D. Stoller. Type inference for parameterized race-free Java. In VMCAI, pages 149--160, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  4. A. Aiken and D. Gay. Barrier inference. In POPL, pages 243--354, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. C. Boyapati and M. Rinard. A parameterized type system for race-free Java programs. In OOPSLA, pages 56--69, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. CERN. Colt 1.2.0. Available at http://dsd.lbl.gov/~hoschek/colt/, 2007.Google ScholarGoogle Scholar
  7. A. T. Chamillard, L. A. Clarke, and G. 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
  8. J.-D. Choi, K. Lee, A. Loginov, R. O'Callahan, V. Sarkar, and M. Sridhara. Efficient and precise datarace detection for multithreaded object-oriented programs. In PLDI, pages 258--269, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. J.-D. Choi, B. P. Miller, and R. H. B. Netzer. Techniques for debugging parallel programs with flowback analysis. TOPLAS, 13(4):491--530, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Christiaens and K. D. Bosschere. Accordion clocks: Logical clocks for data race detection. In Euro-Par, pages 494--503, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. M. Christiaens and K. D. Bosschere. TRaDe: Data Race Detection for Java. In International Conference on Computational Science, pages 761--770, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. M. B. Dwyer and L. 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
  13. The Eclipse programming environment, version 3.4.0. Available at \texttthttp://www.eclipse.org, 2009.Google ScholarGoogle Scholar
  14. T. Elmas, S. Qadeer, and S. Tasiran. Goldilocks: A race and transaction-aware Java runtime. In PLDI, pages 245--255, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. D. R. Engler and K. Ashcraft. RacerX: Effective, static detection of race conditions and deadlocks. In SOSP, pages 237--252, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. C. Flanagan and S. N. Freund. Atomizer: A dynamic atomicity checker for multithreaded programs. Sci. Comput. Program., 71(2):89--109, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. C. Flanagan, S. N. Freund, and J. Yi. Velodrome: A sound and complete dynamic atomicity checker for multithreaded programs. In PLDI, pages 293--303, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. E. Fleury and G. Sutre. Raja, version 0.4.0-pre4. Available at http://raja.sourceforge.net/, 2007.Google ScholarGoogle Scholar
  19. D. Grossman. Type-safe multithreading in Cyclone. In TLDI, pages 13--25, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Java Grande Forum. Java Grande benchmark suite. Available at http://www.javagrande.org/, 2008.Google ScholarGoogle Scholar
  21. L. Lamport. Time, clocks, and the ordering of events in a distributed system. Commun. ACM, 21(7):558--565, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. J. Manson, W. Pugh, and S. V. Adve. The Java memory model. In POPL, pages 378--391, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. F. Mattern. Virtual time and global states of distributed systems. In Workshop on Parallel and Distributed Algorithms, 1988.Google ScholarGoogle Scholar
  24. J. M. Mellor-Crummey. On-the-fly detection of data races for programs with nested fork--join parallelism. In Supercomputing, pages 24--33, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. M. Musuvathi, S. Qadeer, T. Ball, G. Basler, P. A. Nainar, and I. Neamtiu. Finding and reproducing heisenbugs in concurrent programs. In OSDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. M. Naik, A. Aiken, and J. Whaley. Effective static race detection for Java. In PLDI, pages 308--319, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. H. 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
  28. R. O'Callahan and J.-D. Choi. Hybrid dynamic data race detection. In PPOPP, pages 167--178, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. E. Pozniansky and A. Schuster. Efficient on-the-fly data race detection in multihreaded C programs. In Proceedings of the ACM Symposium on Principles and Practice of Parallel Programming, pages 179--190, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. E. Pozniansky and A. Schuster. MultiRace: Efficient on-the-fly data race detection in multithreaded C programs. Concurrency and Computation: Practice and Experience, 19(3):327--340, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. M. Ronsse and K. D. Bosschere. RecPlay: A fully integrated practical record/replay system. TCS, 17(2):133--152, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. C. Sadowski, S. N. Freund, and C. Flanagan. SingleTrack: A dynamic determinism checker for multithreaded programs. In ESOP, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. E. Anderson. Eraser: A dynamic data race detector for multi-threaded programs. TOCS, 15(4):391--411, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. E. Schonberg. On-the-fly detection of access anomalies. In PLDI, pages 285--297, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. Standard Performance Evaluation Corporation. SPEC benchmarks. http://www.spec.org/, 2003.Google ScholarGoogle Scholar
  36. N. Sterling. Warlock: A static data race analysis tool. In USENIX Winter Technical Conference, pages 97--106, 1993.Google ScholarGoogle Scholar
  37. Sun Microsystems. The java.util.concurrent package. Available at http://java.sun.com/javase/6/docs/api/, 2008.Google ScholarGoogle Scholar
  38. C. von Praun and T. Gross. Object race detection. In OOPSLA, pages 70--82, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. C. von Praun and T. Gross. Static conflict analysis for multi-threaded object-oriented programs. In PLDI, pages 115--128, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. J. W. Voung, R. Jhala, and S. Lerner. Relay: static race detection on millions of lines of code. In FSE, pages 205--214, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. E. Yahav. Verifying safety properties of concurrent Java programs using 3-valued logic. In POPL, pages 27--40, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Y. Yu, T. Rodeheffer, and W. 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. FastTrack: efficient and precise 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
              • Published in

                cover image ACM Conferences
                PLDI '09: Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation
                June 2009
                492 pages
                ISBN:9781605583921
                DOI:10.1145/1542476
                • cover image ACM SIGPLAN Notices
                  ACM SIGPLAN Notices  Volume 44, Issue 6
                  PLDI '09
                  June 2009
                  478 pages
                  ISSN:0362-1340
                  EISSN:1558-1160
                  DOI:10.1145/1543135
                  Issue’s Table of Contents

                Copyright © 2009 ACM

                Publisher

                Association for Computing Machinery

                New York, NY, United States

                Publication History

                • Published: 15 June 2009

                Permissions

                Request permissions about this article.

                Request Permissions

                Check for updates

                Qualifiers

                • research-article

                Acceptance Rates

                Overall Acceptance Rate406of2,067submissions,20%

              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!