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.
Supplemental Material
- M. Abadi, C. Flanagan, and S. N. Freund. Types for Safe Locking: Static Race Detection for Java. TOPLAS, 28(2):207–255, 2006. Google Scholar
Digital Library
- S. V. Adve and H.-J. Boehm. Memory Models: A Case for Rethinking Parallel Languages and Hardware. CACM, 53:90–101, 2010. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- S. Biswas, M. Zhang, M. D. Bond, and B. Lucia. Valor: Efficient, Software-Only Region Conflict Exceptions. In OOPSLA, pages 241–259, 2015. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- H.-J. Boehm. How to miscompile programs with “benign” data races. In HotPar, 2011. Google Scholar
Digital Library
- H.-J. Boehm. Position paper: Nondeterminism is Unavoidable, but Data Races are Pure Evil. In RACES, pages 9–14, 2012. Google Scholar
Digital Library
- H.-J. Boehm and S. V. Adve. Foundations of the C++ Concurrency Memory Model. In PLDI, pages 68–78, 2008. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- H.-J. Boehm and B. Demsky. Outlawing Ghosts: Avoiding Out-of-ThinAir Results. In MSPC, pages 7:1–7:6, 2014. Google Scholar
Digital Library
- M. D. Bond, K. E. Coons, and K. S. McKinley. Pacer: Proportional Detection of Data Races. In PLDI, pages 255–268, 2010. Google Scholar
Digital Library
- C. Boyapati, R. Lee, and M. Rinard. Ownership Types for Safe Programming: Preventing Data Races and Deadlocks. In OOPSLA, pages 211–230, 2002. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- J. Burnim, K. Sen, and C. Stergiou. Testing Concurrent Programs on Relaxed Memory Models. In ISSTA, pages 122–132, 2011. Google Scholar
Digital Library
- Y. Cai and L. Cao. Effective and Precise Dynamic Detection of Hidden Races for Java Programs. In ESEC/FSE, pages 450–461, 2015. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- A. Dinning and E. Schonberg. Detecting Access Anomalies in Programs with Critical Sections. In PADD, pages 85–96, 1991. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- T. Elmas, S. Qadeer, and S. Tasiran. Goldilocks: A Race and TransactionAware Java Runtime. In PLDI, pages 245–255, 2007. Google Scholar
Digital Library
- D. Engler and K. Ashcraft. RacerX: Effective, Static Detection of Race Conditions and Deadlocks. In SOSP, pages 237–252, 2003. Google Scholar
Digital Library
- J. Erickson, M. Musuvathi, S. Burckhardt, and K. Olynyk. Effective Data-Race Detection for the Kernel. In OSDI, pages 1–16, 2010. Google Scholar
Digital Library
- M. Eslamimehr and J. Palsberg. Race Directed Scheduling of Concurrent Programs. In PPoPP, pages 301–314, 2014. Google Scholar
Digital Library
- C. Flanagan and S. N. Freund. Type Inference Against Races. SCP, 64(1):140–165, 2007. Google Scholar
Digital Library
- C. Flanagan and S. N. Freund. FastTrack: Efficient and Precise Dynamic Race Detection. In PLDI, pages 121–133, 2009. Google Scholar
Digital Library
- C. Flanagan and S. N. Freund. Adversarial Memory for Detecting Destructive Races. In PLDI, pages 244–254, 2010. Google Scholar
Digital Library
- C. Flanagan and S. N. Freund. The RoadRunner Dynamic Analysis Framework for Concurrent Programs. In PASTE, pages 1–8, 2010. Google Scholar
Digital Library
- C. Flanagan and S. N. Freund. RedCard: Redundant Check Elimination for Dynamic Race Detectors. In ECOOP, pages 255–280, 2013. Google Scholar
Digital Library
- C. Flanagan and S. N. Freund. The FastTrack2 Race Detector. Technical report, Williams College, 2017.Google Scholar
- P. Godefroid and N. Nagappan. Concurrency at Microsoft – An Exploratory Survey. In EC 2, 2008.Google Scholar
- T. A. Henzinger, R. Jhala, and R. Majumdar. Race Checking by Context Inference. In PLDI, pages 1–13, 2004. Google Scholar
Digital Library
- J. Huang. Stateless Model Checking Concurrent Programs with Maximal Causality Reduction. In PLDI, pages 165–174, 2015. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- J. Huang and A. K. Rajagopalan. Precise and Maximal Race Detection from Incomplete Traces. In OOPSLA, pages 462–476, 2016. Google Scholar
Digital Library
- S. Huang and J. Huang. Speeding Up Maximal Causality Reduction with Static Dependency Analysis. In ECOOP, pages 16:1–16:22, 2017.Google Scholar
- 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 Scholar
Digital Library
- B. Kasikci, C. Zamfir, and G. Candea. RaceMob: Crowdsourced Data Race Detection. In SOSP, pages 406–422, 2013. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- D. Kini, U. Mathur, and M. Viswanathan. Dynamic Race Prediction in Linear Time. In PLDI, pages 157–170, 2017. Google Scholar
Digital Library
- D. Kini, U. Mathur, and M. Viswanathan, 2018. Personal communication.Google Scholar
- L. Lamport. Time, Clocks, and the Ordering of Events in a Distributed System. CACM, 21(7):558–565, 1978. Google Scholar
Digital Library
- D. Lee, P. M. Chen, J. Flinn, and S. Narayanasamy. Chimera: Hybrid Program Analysis for Determinism. In PLDI, pages 463–474, 2012. Google Scholar
Digital Library
- N. G. Leveson and C. S. Turner. An Investigation of the Therac-25 Accidents. IEEE Computer, 26(7):18–41, 1993. Google Scholar
Digital Library
- T. Lindholm and F. Yellin. The Java Virtual Machine Specification. Prentice Hall PTR, 2nd edition, 1999. Google Scholar
Digital Library
- P. Liu, O. Tripp, and X. Zhang. IPA: Improving Predictive Analysis with Pointer Analysis. In ISSTA, pages 59–69, 2016. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- D. Marino, M. Musuvathi, and S. Narayanasamy. LiteRace: Effective Sampling for Lightweight Data-Race Detection. In PLDI, pages 134– 143, 2009. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- N. D. Matsakis and F. S. Klock, II. The Rust Language. In HILT, pages 103–104, 2014. Google Scholar
Digital Library
- F. Mattern. Virtual Time and Global States of Distributed Systems. In Workshop on Parallel and Distributed Algorithms, pages 215–226, 1988.Google Scholar
- M. Musuvathi and S. Qadeer. Iterative Context Bounding for Systematic Testing of Multithreaded Programs. In PLDI, pages 446–455, 2007. Google Scholar
Digital Library
- M. Naik and A. Aiken. Conditional Must Not Aliasing for Static Race Detection. In POPL, pages 327–338, 2007. Google Scholar
Digital Library
- M. Naik, A. Aiken, and J. Whaley. Effective Static Race Detection for Java. In PLDI, pages 308–319, 2006. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- H. Nishiyama. Detecting Data Races using Dynamic Escape Analysis based on Read Barrier. In VMRT, pages 127–138, 2004. Google Scholar
Digital Library
- R. O’Callahan and J.-D. Choi. Hybrid Dynamic Data Race Detection. In PPoPP, pages 167–178, 2003. Google Scholar
Digital Library
- J. Ouyang, P. M. Chen, J. Flinn, and S. Narayanasamy. ...and region serializability for all. In HotPar, 2013.Google Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- E. Pozniansky and A. Schuster. MultiRace: Efficient On-the-Fly Data Race Detection in Multithreaded C++ Programs. CCPE, 19(3):327–340, 2007. Google Scholar
Digital Library
- P. Pratikakis, J. S. Foster, and M. Hicks. LOCKSMITH: ContextSensitive Correlation Analysis for Race Detection. In PLDI, pages 320–331, 2006. Google Scholar
Digital Library
- D. Rhodes, C. Flanagan, and S. N. Freund. BigFoot: Static Check Placement for Dynamic Race Detection. In PLDI, pages 141–156, 2017. Google Scholar
Digital Library
- M. C. Rinard and M. S. Lam. The Design, Implementation, and Evaluation of Jade. TOPLAS, 20:483–545, 1998. Google Scholar
Digital Library
- 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 Scholar
- 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 Scholar
- 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 Scholar
Digital Library
- C. Segulja and T. S. Abdelrahman. Clean: A Race Detector with Cleaner Semantics. In ISCA, pages 401–413, 2015. Google Scholar
Digital Library
- K. Sen. Race Directed Random Testing of Concurrent Programs. In PLDI, pages 11–21, 2008. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- T. F. Şerbănuţă, F. Chen, and G. Roşu. Maximal Causal Models for Sequentially Consistent Systems. In RV, pages 136–150, 2013.Google Scholar
- K. Serebryany and T. Iskhodzhanov. ThreadSanitizer – data race detection in practice. In WBIA, pages 62–71, 2009. Google Scholar
Digital Library
- K. Serebryany, A. Potapenko, T. Iskhodzhanov, and D. Vyukov. Dynamic Race Detection with LLVM Compiler. In RV, pages 110–114, 2012. Google Scholar
Digital Library
- J. Ševčík and D. Aspinall. On Validity of Program Transformations in the Java Memory Model. In ECOOP, pages 27–51, 2008. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- A. Singh, S. Narayanasamy, D. Marino, T. Millstein, and M. Musuvathi. End-to-End Sequential Consistency. In ISCA, pages 524–535, 2012. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- 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 Scholar
Digital Library
- C. von Praun and T. R. Gross. Object Race Detection. In OOPSLA, pages 70–82, 2001. Google Scholar
Digital Library
- C. von Praun and T. R. Gross. Static Conflict Analysis for MultiThreaded Object-Oriented Programs. In PLDI, pages 115–128, 2003. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- T. Zhang, C. Jung, and D. Lee. ProRace: Practical Data Race Detection for Production Use. In ASPLOS, pages 149–162, 2017. Google Scholar
Digital Library
- P. Zhou, R. Teodorescu, and Y. Zhou. HARD: Hardware-Assisted Lockset-based Race Detection. In HPCA, pages 121–132, 2007. Google Scholar
Digital Library
Index Terms
High-coverage, unbounded sound predictive race detection
Recommendations
Dependence-aware, unbounded sound predictive race detection
Data races are a real problem for parallel software, yet hard to detect. Sound predictive analysis observes a program execution and detects data races that exist in some other, unobserved execution. However, existing predictive analyses miss races ...
SmartTrack: efficient predictive race detection
PLDI 2020: Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and ImplementationWidely used data race detectors, including the state-of-the-art FastTrack algorithm, incur performance costs that are acceptable for regular in-house testing, but miss races detectable from the analyzed execution. Predictive analyses detect more data ...
High-coverage, unbounded sound predictive race detection
PLDI 2018: Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and ImplementationDynamic 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 ...







Comments