skip to main content
research-article
Public Access
Artifacts Evaluated & Functional

High-coverage, unbounded sound predictive race detection

Published:11 June 2018Publication History
Skip Abstract Section

Abstract

Dynamic program analysis can predict data races knowable from an observed execution, but existing predictive analyses either miss races or cannot analyze full program executions. This paper presents Vindicator, a novel, sound (no false races) predictive approach that finds more data races than existing predictive approaches. Vindicator achieves high coverage by using a new, efficient analysis that finds all possible predictable races but may detect false races. Vindicator ensures soundness using a novel algorithm that checks each potential race to determine whether it is a true predictable race. An evaluation using large Java programs shows that Vindicator finds hard-to-detect predictable races that existing sound predictive analyses miss, at a comparable performance cost.

Skip Supplemental Material Section

Supplemental Material

p374-roemer.webm

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 and H.-J. Boehm. Memory Models: A Case for Rethinking Parallel Languages and Hardware. CACM, 53:90–101, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. W. Ahn, S. Qi, M. Nicolaides, J. Torrellas, J.-W. Lee, X. Fang, S. Midkiff, and D. Wong. BulkCompiler: High-Performance Sequential Consistency through Cooperative Compiler and Hardware Support. In MICRO, pages 133–144, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. A. Bessey, K. Block, B. Chelf, A. Chou, B. Fulton, S. Hallem, C. HenriGros, A. Kamsky, S. McPeak, and D. Engler. A Few Billion Lines of Code Later: Using Static Analysis to Find Bugs in the Real World. CACM, 53(2):66–75, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S. Biswas, M. Cao, M. Zhang, M. D. Bond, and B. P. Wood. Lightweight Data Race Detection for Production Runs. In CC, pages 11–21, 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S. Biswas, M. Zhang, M. D. Bond, and B. Lucia. Valor: Efficient, Software-Only Region Conflict Exceptions. In OOPSLA, pages 241–259, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. S. M. Blackburn, R. Garner, C. Hoffman, A. M. Khan, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanović, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo Benchmarks: Java Benchmarking Development and Analysis. In OOPSLA, pages 169–190, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. R. L. Bocchino, Jr., V. S. Adve, S. V. Adve, and M. Snir. Parallel Programming Must Be Deterministic by Default. In HotPar, pages 4–9, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. H.-J. Boehm. How to miscompile programs with “benign” data races. In HotPar, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. H.-J. Boehm. Position paper: Nondeterminism is Unavoidable, but Data Races are Pure Evil. In RACES, pages 9–14, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. H.-J. Boehm and S. V. Adve. Foundations of the C++ Concurrency Memory Model. In PLDI, pages 68–78, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. H.-J. Boehm and S. V. Adve. You Don’t Know Jack about Shared Variables or Memory Models. CACM, 55(2):48–54, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. H.-J. Boehm and B. Demsky. Outlawing Ghosts: Avoiding Out-of-ThinAir Results. In MSPC, pages 7:1–7:6, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. D. Bond, K. E. Coons, and K. S. McKinley. Pacer: Proportional Detection of Data Races. In PLDI, pages 255–268, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. C. Boyapati, R. Lee, and M. Rinard. Ownership Types for Safe Programming: Preventing Data Races and Deadlocks. In OOPSLA, pages 211–230, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. S. Burckhardt, P. Kothari, M. Musuvathi, and S. Nagarakatte. A Randomized Scheduler with Probabilistic Guarantees of Finding Bugs. In ASPLOS, pages 167–178, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. J. Burnim, K. Sen, and C. Stergiou. Testing Concurrent Programs on Relaxed Memory Models. In ISSTA, pages 122–132, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Y. Cai and L. Cao. Effective and Precise Dynamic Detection of Hidden Races for Java Programs. In ESEC/FSE, pages 450–461, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. M. Cao, J. Roemer, A. Sengupta, and M. D. Bond. Prescient Memory: Exposing Weak Memory Model Behavior by Looking into the Future. In ISMM, pages 99–110, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. F. Chen, T. F. Şerbănuţă, and G. Roşu. jPredictor: A Predictive Runtime Analysis Tool for Java. In ICSE, pages 221–230, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. J.-D. Choi, K. Lee, A. Loginov, R. O’Callahan, V. Sarkar, and M. Sridharan. Efficient and Precise Datarace Detection for Multithreaded Object-Oriented Programs. In PLDI, pages 258–269, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. J. Devietti, B. P. Wood, K. Strauss, L. Ceze, D. Grossman, and S. Qadeer. RADISH: Always-On Sound and Complete Race Detection in Software and Hardware. In ISCA, pages 201–212, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. A. Dinning and E. Schonberg. Detecting Access Anomalies in Programs with Critical Sections. In PADD, pages 85–96, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. L. Effinger-Dean, B. Lucia, L. Ceze, D. Grossman, and H.-J. Boehm. IFRit: Interference-Free Regions for Dynamic Data-Race Detection. In OOPSLA Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. T. Elmas, S. Qadeer, and S. Tasiran. Goldilocks: A Race and TransactionAware Java Runtime. In PLDI, pages 245–255, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. D. Engler and K. Ashcraft. RacerX: Effective, Static Detection of Race Conditions and Deadlocks. In SOSP, pages 237–252, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. J. Erickson, M. Musuvathi, S. Burckhardt, and K. Olynyk. Effective Data-Race Detection for the Kernel. In OSDI, pages 1–16, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. M. Eslamimehr and J. Palsberg. Race Directed Scheduling of Concurrent Programs. In PPoPP, pages 301–314, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. C. Flanagan and S. N. Freund. Type Inference Against Races. SCP, 64(1):140–165, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. C. Flanagan and S. N. Freund. FastTrack: Efficient and Precise Dynamic Race Detection. In PLDI, pages 121–133, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. C. Flanagan and S. N. Freund. Adversarial Memory for Detecting Destructive Races. In PLDI, pages 244–254, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. C. Flanagan and S. N. Freund. The RoadRunner Dynamic Analysis Framework for Concurrent Programs. In PASTE, pages 1–8, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. C. Flanagan and S. N. Freund. RedCard: Redundant Check Elimination for Dynamic Race Detectors. In ECOOP, pages 255–280, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. C. Flanagan and S. N. Freund. The FastTrack2 Race Detector. Technical report, Williams College, 2017.Google ScholarGoogle Scholar
  35. P. Godefroid and N. Nagappan. Concurrency at Microsoft – An Exploratory Survey. In EC 2, 2008.Google ScholarGoogle Scholar
  36. T. A. Henzinger, R. Jhala, and R. Majumdar. Race Checking by Context Inference. In PLDI, pages 1–13, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. J. Huang. Stateless Model Checking Concurrent Programs with Maximal Causality Reduction. In PLDI, pages 165–174, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. J. Huang, P. O. Meredith, and G. Roşu. Maximal Sound Predictive Race Detection with Control Flow Abstraction. In PLDI, pages 337–348, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. J. Huang and A. K. Rajagopalan. Precise and Maximal Race Detection from Incomplete Traces. In OOPSLA, pages 462–476, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. S. Huang and J. Huang. Speeding Up Maximal Causality Reduction with Static Dependency Analysis. In ECOOP, pages 16:1–16:22, 2017.Google ScholarGoogle Scholar
  41. B. Kasikci, C. Zamfir, and G. Candea. Data Races vs. Data Race Bugs: Telling the Difference with Portend. In ASPLOS, pages 185–198, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. B. Kasikci, C. Zamfir, and G. Candea. RaceMob: Crowdsourced Data Race Detection. In SOSP, pages 406–422, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. B. Kasikci, C. Zamfir, and G. Candea. Automated Classification of Data Races Under Both Strong and Weak Memory Models. TOPLAS, 37(3):8:1–8:44, May 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. D. Kini, U. Mathur, and M. Viswanathan. Dynamic Race Prediction in Linear Time. In PLDI, pages 157–170, 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. D. Kini, U. Mathur, and M. Viswanathan, 2018. Personal communication.Google ScholarGoogle Scholar
  46. L. Lamport. Time, Clocks, and the Ordering of Events in a Distributed System. CACM, 21(7):558–565, 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. D. Lee, P. M. Chen, J. Flinn, and S. Narayanasamy. Chimera: Hybrid Program Analysis for Determinism. In PLDI, pages 463–474, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. N. G. Leveson and C. S. Turner. An Investigation of the Therac-25 Accidents. IEEE Computer, 26(7):18–41, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. T. Lindholm and F. Yellin. The Java Virtual Machine Specification. Prentice Hall PTR, 2nd edition, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. P. Liu, O. Tripp, and X. Zhang. IPA: Improving Predictive Analysis with Pointer Analysis. In ISSTA, pages 59–69, 2016. Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. S. Lu, S. Park, E. Seo, and Y. Zhou. Learning from Mistakes: A Comprehensive Study on Real World Concurrency Bug Characteristics. In ASPLOS, pages 329–339, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. B. Lucia, L. Ceze, K. Strauss, S. Qadeer, and H.-J. Boehm. Conflict Exceptions: Simplifying Concurrent Language Semantics with Precise Hardware Exceptions for Data-Races. In ISCA, pages 210–221, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. P. Luo, D. Zou, H. Jin, Y. Du, L. Zheng, and J. Shen. DigHR: precise dynamic detection of hidden races with weak causal relation analysis. J. Supercomputing, 2018. pages 378–391, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. D. Marino, M. Musuvathi, and S. Narayanasamy. LiteRace: Effective Sampling for Lightweight Data-Race Detection. In PLDI, pages 134– 143, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. D. Marino, A. Singh, T. Millstein, M. Musuvathi, and S. Narayanasamy. DRFx: A Simple and Efficient Memory Model for Concurrent Programming Languages. In PLDI, pages 351–362, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  56. D. Marino, A. Singh, T. Millstein, M. Musuvathi, and S. Narayanasamy. A Case for an SC-Preserving Compiler. In PLDI, pages 199–210, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. N. D. Matsakis and F. S. Klock, II. The Rust Language. In HILT, pages 103–104, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. F. Mattern. Virtual Time and Global States of Distributed Systems. In Workshop on Parallel and Distributed Algorithms, pages 215–226, 1988.Google ScholarGoogle Scholar
  59. M. Musuvathi and S. Qadeer. Iterative Context Bounding for Systematic Testing of Multithreaded Programs. In PLDI, pages 446–455, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. M. Naik and A. Aiken. Conditional Must Not Aliasing for Static Race Detection. In POPL, pages 327–338, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  61. M. Naik, A. Aiken, and J. Whaley. Effective Static Race Detection for Java. In PLDI, pages 308–319, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  62. S. Narayanasamy, Z. Wang, J. Tigani, A. Edwards, and B. Calder. Automatically Classifying Benign and Harmful Data Races Using Replay Analysis. In PLDI, pages 22–31, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  63. H. Nishiyama. Detecting Data Races using Dynamic Escape Analysis based on Read Barrier. In VMRT, pages 127–138, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. R. O’Callahan and J.-D. Choi. Hybrid Dynamic Data Race Detection. In PPoPP, pages 167–178, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. J. Ouyang, P. M. Chen, J. Flinn, and S. Narayanasamy. ...and region serializability for all. In HotPar, 2013.Google ScholarGoogle Scholar
  66. PCWorld. Nasdaq’s Facebook Glitch Came From Race Conditions, 2012. http://www.pcworld.com/article/255911/nasdaqs_facebook_ glitch_came_from_race_conditions.html .Google ScholarGoogle Scholar
  67. Y. Peng, B. P. Wood, and J. Devietti. PARSNIP: Performant Architecture for Race Safety with No Impact on Precision. In MICRO, pages 490–502, 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  68. E. Pozniansky and A. Schuster. MultiRace: Efficient On-the-Fly Data Race Detection in Multithreaded C++ Programs. CCPE, 19(3):327–340, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. P. Pratikakis, J. S. Foster, and M. Hicks. LOCKSMITH: ContextSensitive Correlation Analysis for Race Detection. In PLDI, pages 320–331, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. D. Rhodes, C. Flanagan, and S. N. Freund. BigFoot: Static Check Placement for Dynamic Race Detection. In PLDI, pages 141–156, 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. M. C. Rinard and M. S. Lam. The Design, Implementation, and Evaluation of Jade. TOPLAS, 20:483–545, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  72. J. Roemer and M. D. Bond. An Online Dynamic Analysis for Sound Predictive Data Race Detection. Technical Report OSU-CISRC-4/16-TR01, Computer Science & Engineering, Ohio State University, 2016.Google ScholarGoogle Scholar
  73. J. Roemer, K. Genç, and M. D. Bond. High-Coverage, Unbounded Sound Predictive Race Detection. Technical Report OSU-CISRC-3/18-TR01, Computer Science & Engineering, Ohio State University, 2018.Google ScholarGoogle Scholar
  74. M. Said, C. Wang, Z. Yang, and K. Sakallah. Generating Data Race Witnesses by an SMT-based Analysis. In NFM, pages 313–327, 2011. Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs. In SOSP, pages 27–37, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. C. Segulja and T. S. Abdelrahman. Clean: A Race Detector with Cleaner Semantics. In ISCA, pages 401–413, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  76. K. Sen. Race Directed Random Testing of Concurrent Programs. In PLDI, pages 11–21, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  77. A. Sengupta, S. Biswas, M. Zhang, M. D. Bond, and M. Kulkarni. Hybrid Static–Dynamic Analysis for Statically Bounded Region Serializability. In ASPLOS, pages 561–575, 2015. Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. T. F. Şerbănuţă, F. Chen, and G. Roşu. Maximal Causal Models for Sequentially Consistent Systems. In RV, pages 136–150, 2013.Google ScholarGoogle Scholar
  79. K. Serebryany and T. Iskhodzhanov. ThreadSanitizer – data race detection in practice. In WBIA, pages 62–71, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. K. Serebryany, A. Potapenko, T. Iskhodzhanov, and D. Vyukov. Dynamic Race Detection with LLVM Compiler. In RV, pages 110–114, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. J. Ševčík and D. Aspinall. On Validity of Program Transformations in the Java Memory Model. In ECOOP, pages 27–51, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  82. T. Sheng, N. Vachharajani, S. Eranian, R. Hundt, W. Chen, and W. Zheng. RACEZ: A Lightweight and Non-Invasive Race Detection Tool for Production Applications. In ICSE, pages 401–410, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  83. A. Singh, D. Marino, S. Narayanasamy, T. Millstein, and M. Musuvathi. Efficient Processor Support for DRFx, a Memory Model with Exceptions. In ASPLOS, pages 53–66, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. A. Singh, S. Narayanasamy, D. Marino, T. Millstein, and M. Musuvathi. End-to-End Sequential Consistency. In ISCA, pages 524–535, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  85. Y. Smaragdakis, J. Evans, C. Sadowski, J. Yi, and C. Flanagan. Sound Predictive Race Detection in Polynomial Time. In POPL, pages 387–400, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  86. Z. Sura, X. Fang, C.-L. Wong, S. P. Midkiff, J. Lee, and D. Padua. Compiler Techniques for High Performance Sequentially Consistent Java Programs. In PPoPP, pages 2–13, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  87. U.S.–Canada Power System Outage Task Force. Final Report on the August 14th Blackout in the United States and Canada. Technical report, Department of Energy, 2004.Google ScholarGoogle Scholar
  88. K. Veeraraghavan, P. M. Chen, J. Flinn, and S. Narayanasamy. Detecting and Surviving Data Races using Complementary Schedules. In SOSP, pages 369–384, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  89. C. von Praun and T. R. Gross. Object Race Detection. In OOPSLA, pages 70–82, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  90. C. von Praun and T. R. Gross. Static Conflict Analysis for MultiThreaded Object-Oriented Programs. In PLDI, pages 115–128, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  91. J. W. Voung, R. Jhala, and S. Lerner. RELAY: Static Race Detection on Millions of Lines of Code. In ESEC/FSE, pages 205–214, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  92. B. P. Wood, L. Ceze, and D. Grossman. Low-Level Detection of Language-Level Data Races with LARD. In ASPLOS, pages 671–686, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  93. T. Zhang, C. Jung, and D. Lee. ProRace: Practical Data Race Detection for Production Use. In ASPLOS, pages 149–162, 2017. Google ScholarGoogle ScholarDigital LibraryDigital Library
  94. P. Zhou, R. Teodorescu, and Y. Zhou. HARD: Hardware-Assisted Lockset-based Race Detection. In HPCA, pages 121–132, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. High-coverage, unbounded sound predictive 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 53, Issue 4
        PLDI '18
        April 2018
        834 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/3296979
        Issue’s Table of Contents
        • cover image ACM Conferences
          PLDI 2018: Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation
          June 2018
          825 pages
          ISBN:9781450356985
          DOI:10.1145/3192366

        Copyright © 2018 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 11 June 2018

        Check for updates

        Qualifiers

        • research-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!