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.
Supplemental Material
- Mazurkiewicz, A.W.: Trace theory. In: Advances in Petri Nets. (1986) 279--324 Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Peled, D.: Partial order reduction: Model-checking using representatives. In: MFCS. (1996) 93--112 Google Scholar
Digital Library
- Grumberg, O., Lerda, F., Strichman, O., Theobald, M.: Proof-guided under approximation-widening for multi-process systems. In: POPL. (2005) 122--131 Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Kahlon, V., Wang, C., Gupta, A.: Monotonic partial order reduction: An optimal symbolic partial order reduction technique. In: CAV. (2009) 398--413 Google Scholar
Digital Library
- Qadeer, S., Rehof, J.: Context-bounded model checking of concurrent software. In: TACAS. (2005) 93--107 Google Scholar
Digital Library
- Musuvathi, M., Qadeer, S.: Iterative context bounding for systematic testing of multithreaded programs. In: PLDI. (2007) 446--455 Google Scholar
Digital Library
- Lal, A., Touili, T., Kidd, N., Reps, T.W.: Interprocedural analysis of concurrent programs under a context bound. In: TACAS. (2008) 282--298 Google Scholar
Digital Library
- Adve, S.V., Gharachorloo, K.: Shared memory consistency models: A tutorial. IEEE Computer 29(12) (1996) 66--76 Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Torlak, E., Vaziri, M., Dolby, J.: Memsat: checking axiomatic specifications of memory models. In: PLDI. (2010) 341--350 Google Scholar
Digital Library
- Sinha, N., Wang, C.: Staged concurrent program analysis, FSE 2010 Google Scholar
Digital Library
- Lamport, L.: How to make a multiprocessor computer that correctly executes multiprocess programs. IEEE Trans. Computers 28(9) (1979) 690--691 Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Kurshan, R.P.: Computer-aided verification of coordinating processes: the automata-theoretic approach. Princeton University Press (1994) Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Henzinger, T.A., Jhala, R., Majumdar, R., McMillan, K.L.: Abstractions from proofs. In: POPL. (2004) 232--244 Google Scholar
Digital Library
- Wang, C., Chaudhuri, S., Gupta, A., Yang, Y.: Symbolic pruning of concurrent program executions. In: FSE 2009. 23--32 Google Scholar
Digital Library
- Wang, C., Kundu, S., Ganai, M.K., Gupta, A.: Symbolic predictive analysis for concurrent programs. In: FM. (2009) 256--272 Google Scholar
Digital Library
- Wang, C., Limaye, R., Ganai, M., Gupta, A.: Trace-based symbolic analysis for atomicity violations. In: TACAS, Springer (2010) 328--342 Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
- Ivancic, F., Yang, Z., Ganai, M.K., Gupta, A., Shlyakhter, I., Ashar, P.: F-soft: Software verification platform. In: CAV. (2005) 301--306 Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Dutertre, B., de Moura, L.: A fast linear-arithmetic solver for DPLL(T). In: CAV. (2006) 81--94 Google Scholar
Digital Library
- de Moura, L., Bjørner, N.: Z3: An efficient smt solver. In: TACAS. (2008) 337--340 Google Scholar
Digital Library
- Lu, S., Tucek, J., Qin, F., Zhou, Y.: AVIO: detecting atomicity violations via access interleaving invariants. In: ASPLOS. (2006) 37--48 Google Scholar
Digital Library
- Farzan, A., Madhusudan, P., Sorrentino, F.: Meta-analysis for atomicity violations under nested locking. In: CAV. (2009) 248--262 Google Scholar
Digital Library
- Yang, Y., Gopalakrishnan, G., Lindstrom, G., Slind, K.: Nemos: A framework for axiomatic and executable specifications of memory consistency models. In: IPDPS. (2004)Google Scholar
- http://www.javagrande.org/: The Java Grande Forum Benchmark Suite.Google Scholar
- Havelund, K., Pressburger, T.: Model checking Java programs using Java PathFinder. International Journal on Software Tools for Technology Transfer (STTT) 2(4)(2000)Google Scholar
- von Praun, C., Gross, T.R.: Static detection of atomicity violations in object-oriented programs. Object Technology 3(6) (2004)Google Scholar
- de Moura, L.M., Bjørner, N.: Efficient e-matching for smt solvers. In: CADE. (2007) 183--198 Google Scholar
Digital Library
- Flanagan, C., Godefroid, P.: Dynamic partial-order reduction for model checking software. In: POPL. (2005) 110--121 Google Scholar
Digital Library
- Clarke, E., Grumberg, O., Peled, D.: Model Checking. MIT Press.Google Scholar
- Flanagan, C., Qadeer, S.: Thread-modular model checking. In: SPIN. (2003) 213--224 Google Scholar
Digital Library
- Henzinger, T.A., Jhala, R., Majumdar, R., Qadeer, S.: Thread-modular abstraction refinement. In: CAV. Volume 2725., Springer-Verlag (2003) 262--274Google Scholar
- Cohen, A., Namjoshi, K.S.: Local proofs for global safety properties. Formal Methods in System Design 34(2) (2009) 104--125 Google Scholar
Digital Library
- Şerbǎnuţă, T.F., Chen, F., Roşu, G.: Maximal causal models for sequentially consistent multithreaded systems. Technical report, University of Illinois (2010)Google Scholar
- Wei, O., Gurfinkel, A., Chechik, M.: Mixed transition systems revisited. In: VMCAI. (2009) 349--365 Google Scholar
Digital Library
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- Detlefs, D., Nelson, G., Saxe, J.B.: Simplify: a theorem prover for program checking. J. ACM 52(3) (2005) 365--473 Google Scholar
Digital Library
- 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 Scholar
Digital Library
Index Terms
On interference abstractions
Recommendations
On interference abstractions
POPL '11: Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesInterference 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 ...
Staged concurrent program analysis
FSE '10: Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineeringConcurrent program verification is challenging because it involves exploring a large number of possible thread interleavings together with complex sequential reasoning. As a result, concurrent program verifiers resort to bi-modal reasoning, which ...
Slicing Abstractions
Fundamentals of Software Engineering 2007: Selected ContributionsAbstraction and slicing are both techniques for reducing the size of the state space to be inspected during verification. In this paper, we present a new model checking procedure for infinite-state concurrent systems that interleaves automatic ...







Comments