skip to main content
research-article

On interference abstractions

Published:26 January 2011Publication History
Skip Abstract Section

Abstract

Interference is the bane of both concurrent programming and analysis. To avoid considering all possible interferences between concurrent threads, most automated static analysis employ techniques to approximate interference, e.g., by restricting the thread scheduler choices or by approximating the transition relations or reachable states of the program. However, none of these methods are able to reason about interference directly. In this paper, we introduce the notion of interference abstractions (IAs), based on the models of shared memory consistency, to reason about interference efficiently. IAs differ from the known abstractions for concurrent programs and cannot be directly modeled by these abstractions. Concurrency bugs typically involve a small number of unexpected interferences and therefore can be captured by small IAs. We show how IAs, in the form of both over- and under-approximations of interference, can be obtained syntactically from the axioms of sequential consistency. Further, we present an automatic method to synthesize IAs suitable for checking safety properties. Our experimental results show that small IAs are often sufficient to check properties in realistic applications, and drastically improve the scalability of concurrent program analysis in these applications.

Skip Supplemental Material Section

Supplemental Material

38-mpeg-4.mp4

References

  1. Mazurkiewicz, A.W.: Trace theory. In: Advances in Petri Nets. (1986) 279--324 Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Godefroid, P.: Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem. Springer-Verlag New York, Inc., Secaucus, NJ, USA (1996) Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Peled, D.: Partial order reduction: Model-checking using representatives. In: MFCS. (1996) 93--112 Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Grumberg, O., Lerda, F., Strichman, O., Theobald, M.: Proof-guided under approximation-widening for multi-process systems. In: POPL. (2005) 122--131 Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Musuvathi, M., Qadeer, S., Ball, T., Basler, G., Nainar, P.A., Neamtiu, I.: Finding and reproducing heisenbugs in concurrent programs. In: OSDI. (2008) 267--280 Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Kahlon, V., Wang, C., Gupta, A.: Monotonic partial order reduction: An optimal symbolic partial order reduction technique. In: CAV. (2009) 398--413 Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Qadeer, S., Rehof, J.: Context-bounded model checking of concurrent software. In: TACAS. (2005) 93--107 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Musuvathi, M., Qadeer, S.: Iterative context bounding for systematic testing of multithreaded programs. In: PLDI. (2007) 446--455 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Lal, A., Touili, T., Kidd, N., Reps, T.W.: Interprocedural analysis of concurrent programs under a context bound. In: TACAS. (2008) 282--298 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Adve, S.V., Gharachorloo, K.: Shared memory consistency models: A tutorial. IEEE Computer 29(12) (1996) 66--76 Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Burckhardt, S., Alur, R., Martin, M. M. K.: Checkfence: checking consistency of concurrent data types on relaxed memory models. In: PLDI. (2007) 12--21 Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Torlak, E., Vaziri, M., Dolby, J.: Memsat: checking axiomatic specifications of memory models. In: PLDI. (2010) 341--350 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Sinha, N., Wang, C.: Staged concurrent program analysis, FSE 2010 Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Lamport, L.: How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans. Computers 28(9) (1979) 690--691 Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Lu, S., Park, S., Seo, E., Zhou, Y.: Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. SIGARCH Comput. Archit. News 36(1) (2008) 329--339 Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Kurshan, R.P.: Computer-aided verification of coordinating processes: the automata-theoretic approach. Princeton University Press (1994) Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Clarke, E. M., Grumberg, O., Jha, S., Lu, Y., Veith, H.: Counterexample-guided abstraction refinement for symbolic model checking. Journal of the ACM (JACM) 50(5) (2003) 752--794 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Ball, T., Majumdar, R., Millstein, T.D., Rajamani, S.K.: Automatic predicate abstraction of C programs. In: PLDI. Volume 36(5)., ACM Press (June 2001) 203--213 Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Henzinger, T.A., Jhala, R., Majumdar, R., McMillan, K.L.: Abstractions from proofs. In: POPL. (2004) 232--244 Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Wang, C., Chaudhuri, S., Gupta, A., Yang, Y.: Symbolic pruning of concurrent program executions. In: FSE 2009. 23--32 Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Wang, C., Kundu, S., Ganai, M.K., Gupta, A.: Symbolic predictive analysis for concurrent programs. In: FM. (2009) 256--272 Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Wang, C., Limaye, R., Ganai, M., Gupta, A.: Trace-based symbolic analysis for atomicity violations. In: TACAS, Springer (2010) 328--342 Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Kahlon, V., Wang, C.: Universal Causality Graphs: A precise happens-before model for detecting bugs in concurrent programs. In: CAV, Springer (2010) 434--445 Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Clarke, E., Kroening, D., Lerda, F.: A tool for checking ANSI-C programs. In Jensen, K., Podelski, A., eds.: TACAS. Volume 2988 of LNCS., Springer (2004) 168--176Google ScholarGoogle Scholar
  25. Ivancic, F., Yang, Z., Ganai, M.K., Gupta, A., Shlyakhter, I., Ashar, P.: F-soft: Software verification platform. In: CAV. (2005) 301--306 Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Lahiri, S.K., Qadeer, S., Rakamaric, Z.: Static and precise detection of concurrency errors in systems code using smt solvers. In: CAV. (2009) 509--524 Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Ballance, R.A., Maccabe, A.B., Ottenstein, K.J.: The program dependence web: A representation supporting control, data, and demand-driven interpretation of imperative languages. In: PLDI'90. 257--271 Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Dutertre, B., de Moura, L.: A fast linear-arithmetic solver for DPLL(T). In: CAV. (2006) 81--94 Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. de Moura, L., Bjørner, N.: Z3: An efficient smt solver. In: TACAS. (2008) 337--340 Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Lu, S., Tucek, J., Qin, F., Zhou, Y.: AVIO: detecting atomicity violations via access interleaving invariants. In: ASPLOS. (2006) 37--48 Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Farzan, A., Madhusudan, P., Sorrentino, F.: Meta-analysis for atomicity violations under nested locking. In: CAV. (2009) 248--262 Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Yang, Y., Gopalakrishnan, G., Lindstrom, G., Slind, K.: Nemos: A framework for axiomatic and executable specifications of memory consistency models. In: IPDPS. (2004)Google ScholarGoogle Scholar
  33. http://www.javagrande.org/: The Java Grande Forum Benchmark Suite.Google ScholarGoogle Scholar
  34. Havelund, K., Pressburger, T.: Model checking Java programs using Java PathFinder. International Journal on Software Tools for Technology Transfer (STTT) 2(4)(2000)Google ScholarGoogle Scholar
  35. von Praun, C., Gross, T.R.: Static detection of atomicity violations in object-oriented programs. Object Technology 3(6) (2004)Google ScholarGoogle Scholar
  36. de Moura, L.M., Bjørner, N.: Efficient e-matching for smt solvers. In: CADE. (2007) 183--198 Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Flanagan, C., Godefroid, P.: Dynamic partial-order reduction for model checking software. In: POPL. (2005) 110--121 Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Clarke, E., Grumberg, O., Peled, D.: Model Checking. MIT Press.Google ScholarGoogle Scholar
  39. Flanagan, C., Qadeer, S.: Thread-modular model checking. In: SPIN. (2003) 213--224 Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Henzinger, T.A., Jhala, R., Majumdar, R., Qadeer, S.: Thread-modular abstraction refinement. In: CAV. Volume 2725., Springer-Verlag (2003) 262--274Google ScholarGoogle Scholar
  41. Cohen, A., Namjoshi, K.S.: Local proofs for global safety properties. Formal Methods in System Design 34(2) (2009) 104--125 Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Şerbǎnuţă, T.F., Chen, F., Roşu, G.: Maximal causal models for sequentially consistent multithreaded systems. Technical report, University of Illinois (2010)Google ScholarGoogle Scholar
  43. Wei, O., Gurfinkel, A., Chechik, M.: Mixed transition systems revisited. In: VMCAI. (2009) 349--365 Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Godefroid, P., Nori, A.V., Rajamani, S.K., Tetali, S.: Compositional may-must program analysis: unleashing the power of alternation. In: POPL. (2010) 43--56 Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Bryant, R.E., Kroening, D., Ouaknine, J., Seshia, S.A., Strichman, O., Brady, B.A.: An abstraction-based decision procedure for bit-vector arithmetic. STTT 11(2) (2009) 95--104 Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Detlefs, D., Nelson, G., Saxe, J.B.: Simplify: a theorem prover for program checking. J. ACM 52(3) (2005) 365--473 Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. Leino, K.R.M., Musuvathi, M., Ou, X.: A two-tier technique for supporting quantifiers in a lazily proof-explicating theorem prover. In: TACAS. (2005) 334--348 Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. On interference abstractions

        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

        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!