skip to main content
article

Conditional must not aliasing for static race detection

Published:17 January 2007Publication History
Skip Abstract Section

Abstract

Race detection algorithms for multi-threaded programs using the common lock-based synchronization idiom must correlate locks with the memory locations they guard. The heart of a proof of race freedom is showing that if two locks are distinct, then the memory locations they guard are also distinct. This is an example of a general property we call conditional must not aliasing: Under the assumption that two objects are not aliased, prove that two other objects are not aliased. This paper introduces and gives an algorithm for conditional must not alias analysis and discusses experimental results for sound race detection of Java programs.

References

  1. S. Adve, M. Hill, B. Miller, and R. Netzer. Detecting data races on weak memory systems. In Proceedings of ISCA'91, pages 234--243, 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. R. Agarwal, A. Sasturkar, Wang L, and S. Stoller. Optimized run-time race detection and atomicity checking using partial discovered types. In Proceedings of ASE'05, pages 233--242, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. C. Boyapati, R. Lee, and M. Rinard. Ownership types for safe programming: Preventing data races and deadlocks. In Proceedings of OOPSLA'02, pages 211--230, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. C. Boyapati and M. Rinard. A parameterized type system for race-free Java programs. In Proceedings of OOPSLA'01, pages 56--69, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. J. Choi, K. Lee, A. Loginov, R. O'Callahan, V. Sarkar, and M. Sridharan. Efficient and precise datarace detection for multithreaded object-oriented programs. In Proceedings of PLDI'02, pages 258--269, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. J. Choi, A. Loginov, and V. Sarkar. Static datarace analysis for multithreaded object-oriented programs. Technical Report RC22146, IBM Research, 2001.]]Google ScholarGoogle Scholar
  7. J. Choi, B. Miller, and R. Netzer. Techniques for debugging parallel programs with flowback analysis. ACM TOPLAS, 13(4):491--530, 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. M. Christiaens and K. Brosschere. TRaDe: A topological approach to on-the-fly race detection in Java programs. In Proceedings of JVM'01, pages 105--116, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. P. Cousot and R. Cousot. Static determination of dynamic properties of generalized type unions. In Language Design for Reliable Software, pages 77--94, 1977.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Das, S. Lerner, and M. Seigle. ESP: Path-sensitive program verification in polynomial time. In Proceedings of PLDI'02, pages 57--68, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. A. Dinning and E. Schonberg. An empirical comparison of monitoring algorithms for access anomaly detection. In Proceedings of PPoPP'90, pages 1--10, 1990.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. A. Dinning and E. Schonberg. Detecting access anomalies in programs with critical sections. In Proceedings of PADD'91, pages 85--96, 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. D. Engler and K. Ashcraft. RacerX: Effective, static detection of race conditions and deadlocks. In Proceedings of SOSP'03, pages 237--252, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. C. Flanagan. Verifying commit-atomicity using model-checking. In Proceedings of SPIN'04, pages 252--266, 2004.]]Google ScholarGoogle ScholarCross RefCross Ref
  15. C. Flanagan and M. Abadi. Types for safe locking. In Proceedings of ESOP'99, pages 91--108, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. C. Flanagan and S. Freund. Type-based race detection for Java. In Proceedings of PLDI'00, pages 219--232, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. C. Flanagan and S. Freund. Atomizer: a dynamic atomicity checker for multithreaded programs. In Proceedings of POPL'04, pages 256--267, 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. C. Flanagan, S. Freund, and M. Lifshin. Type inference for atomicity. In Proceedings of TLDI'05, pages 47--58, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. C. Flanagan and S. Qadeer. A type and effect system for atomicity. In Proceedings of PLDI'03, pages 338--349, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. C. Flanagan and S. Qadeer. Types for atomicity. In Proceedings of TLDI'03, pages 1--12, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. S. Ghemawat, K. Randall, and D. Scales. Field analysis: Getting useful and low-cost interprocedural information. In Proceedings of PLDI'00, pages 334--344, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. D. Grossman. Type-safe multithreading in Cyclone. In Proceedings of TLDI'03, pages 13--25, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. J. Harrow. Runtime checking of multithreaded applications with visual threads. In Proceedings of SPIN'00, pages 331--342, 2000.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. D. Heine and M. Lam. A practical flow-sensitive and context-sensitive C and C++ memory leak detector. In Proceedings of PLDI'03, pages 168--181, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. T. Henzinger, R. Jhala, and R. Majumdar. Race checking by context inference. In Proceedings of PLDI'04, pages 1--13, 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. L. Lamport. Time, clocks, and the ordering of events in a distributed system. CACM, 21(7):558--565, 1978.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. T. Lev-Ami, N. Immerman, T. Reps, S. Sagiv, S. Srivastava, and G. Yorsh. Simulating reachability using first-order logic with applications to verification of linked data structures. In Proceedings of CADE'05, pages 99--115, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. O. Lhoták and L. Hendren. Context-sensitive points-to analysis: is it worth it? In Proceedings of CC'06, 2006.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. R. Lipton. Reduction: A method of proving properties of parallel programs. CACM, 18(12):717--721, 1975.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. S. McPeak and G. Necula. Data structure specifications via local equality axioms. In Proceedings of CAV'05, pages 476--490, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. J. Mellor-Crummey. On-the-fly detection of data races for programs with nested fork-join parallelism. In Proceedings of SC'91, pages 24--35, 1991.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. A. Milanova, A. Rountev, and B. Ryder. Parameterized object sensitivity for points-to and side-effect analyses for Java. In Proceedings of ISSTA'02, pages 1--11, 2002.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. M. Naik, A. Aiken, and J. Whaley. Effective static race detection for Java. In Proceedings of PLDI'06, pages 308--319, 2006.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. R. O'Callahan and J. Choi. Hybrid dynamic data race detection. In Proceedings of PPoPP'03, pages 167--178, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. E. Pozniansky and A. Schuster. Efficient on-the-fly data race detection in multithreaded C++ programs. In Proceedings of PPoPP'03, pages 179--190, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. P. Pratikakis, J. Foster, and M. Hicks. LOCKSMITH: Context-sensitive correlation analysis for race detection. In Proceedings of PLDI'06, pages 320--331, 2006.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. S. Qadeer and D. Wu. KISS: Keep it simple and sequential. In Proceedings of PLDI'04, pages 14--24, 2004.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. M. Ronsse and K. Bosschere. RecPlay: A fully integrated practical record/replay system. ACM TOCS, 17(2):133--152, 1999.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. A. Sasturkar, R. Agarwal, L. Wang, and S. Stoller. Automated type-based analysis of data races and atomicity. In Proceedings of PPoPP'05, pages 83--94, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: A dynamic data race detector for multi-threaded programs. In Proceedings of SOSP'97, pages 27--37, 1997.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. E. Schonberg. On-the-fly detection of access anomalies. In Proceedings of PLDI'89, pages 285--297, 1989.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. N. Sterling. WARLOCK - a static data race analysis tool. In Proceedings of the Usenix Winter 1993 Technical Conference, pages 97--106, 1993.]]Google ScholarGoogle Scholar
  43. C. von Praun and T. Gross. Object race detection. In Proceedings of OOPSLA'01, pages 70--82, 2001.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. C. von Praun and T. Gross. Static conflict analysis for multi-threaded object-oriented programs. In Proceedings of PLDI'03, pages 115--128, 2003.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. L. Wang and S. Stoller. Static analysis of atomicity for programs with non-blocking synchronization. In Proceedings of PPoPP'05, pages 61--71, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. L. Wang and S. Stoller. Runtime analysis of atomicity for multi-threaded programs. IEEE TSE, 32(2):93--110, 2006.]] Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Y. Yu, T. Rodeheffer, and W. Chen. RaceTrack: Efficient detection of data race conditions via adaptive tracking. In Proceedings of SOSP'05, pages 221--234, 2005.]] Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Conditional must not aliasing for static 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 42, Issue 1
        Proceedings of the 2007 POPL Conference
        January 2007
        379 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/1190215
        Issue’s Table of Contents
        • cover image ACM Conferences
          POPL '07: Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
          January 2007
          400 pages
          ISBN:1595935754
          DOI:10.1145/1190216

        Copyright © 2007 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 17 January 2007

        Check for updates

        Qualifiers

        • article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader