skip to main content
research-article

Succinct Representation of Concurrent Trace Sets

Published:14 January 2015Publication History
Skip Abstract Section

Abstract

We present a method and a tool for generating succinct representations of sets of concurrent traces. We focus on trace sets that contain all correct or all incorrect permutations of events from a given trace. We represent trace sets as HB-Formulas that are Boolean combinations of happens-before constraints between events. To generate a representation of incorrect interleavings, our method iteratively explores interleavings that violate the specification and gathers generalizations of the discovered interleavings into an HB-Formula; its complement yields a representation of correct interleavings.

We claim that our trace set representations can drive diverse verification, fault localization, repair, and synthesis techniques for concurrent programs. We demonstrate this by using our tool in three case studies involving synchronization synthesis, bug summarization, and abstraction refinement based verification. In each case study, our initial experimental results have been promising.

In the first case study, we present an algorithm for inferring missing synchronization from an HB-Formula representing correct interleavings of a given trace. The algorithm applies rules to rewrite specific patterns in the HB-Formula into locks, barriers, and wait-notify constructs. In the second case study, we use an HB-Formula representing incorrect interleavings for bug summarization. While the HB-Formula itself is a concise counterexample summary, we present additional inference rules to help identify specific concurrency bugs such as data races, define-use order violations, and two-stage access bugs. In the final case study, we present a novel predicate learning procedure that uses HB-Formulas representing abstract counterexamples to accelerate counterexample-guided abstraction refinement (CEGAR). In each iteration of the CEGAR loop, the procedure refines the abstraction to eliminate multiple spurious abstract counterexamples drawn from the HB-Formula.

Skip Supplemental Material Section

Supplemental Material

p433-sidebyside.mpg

References

  1. A. Albarghouthi and K. McMillan. Beautiful interpolants. In CAV, pages 313--329, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. S. Basu, D. Saha, Y. Lin, and S. Smolka. Generation of all counter-examples for push-down systems. In FORTE, pages 79--94. 2003.Google ScholarGoogle Scholar
  3. D. Beyer. Status report on software verification. In TACAS, pages 373--388. 2014. http://sv-comp.sosy-lab.org/.Google ScholarGoogle ScholarCross RefCross Ref
  4. D. Beyer, T. Henzinger, R. Majumdar, and A. Rybalchenko. Path invariants. In PLDI, pages 300--309, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. D. Beyer and E. Keremoglu. CPACHECKER: A tool for configurable software verification. In CAV, pages 184--190, 2011. http://cpachecker.sosy-lab.org/. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. P. Bjesse and J. Kukula. Using counter example guided abstraction refinement to find complex bugs. In DATE, pages 156--161, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. N. Bjørner, K. McMillan, and A. Rybalchenko. On solving universally quantified horn clauses. In SAS, pages 105--125, 2013.Google ScholarGoogle ScholarCross RefCross Ref
  8. P. Černy, T. Henzinger, A. Radhakrishna, L. Ryzhyk, and T. Tarrach. Efficient synthesis for concurrency by semantics-preserving transformations. In CAV, pages 951--967, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. P. Černy, T. Henzinger, A. Radhakrishna, L. Ryzhyk, and T. Tarrach. Regression-free synthesis for concurrency. In CAV, pages 568--584. 2014. https://github.com/thorstent/ConRepair. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. S. Cherem, T. Chilimbi, and S. Gulwani. Inferring locks for atomic sections. In PLDI, pages 304--315, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. E. Clarke, D. Kroening, and F. Lerda. A tool for checking ANSI-C programs. In TACAS, pages 168--176, 2004. http://www.cprover.org/cbmc/.Google ScholarGoogle ScholarCross RefCross Ref
  12. E. Clarke, D. Kroening, N. Sharygina, and K. Yorav. SATABS: SAT-based predicate abstraction for ANSI-C. In TACAS, pages 570--574, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. E. M. Clarke and E. A. Emerson. Design and synthesis of synchronization skeletons using branching time temporal logic. Springer, 1982.Google ScholarGoogle ScholarCross RefCross Ref
  14. E. M. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-guided abstraction refinement. In CAV, pages 154--169, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. L. De Moura and N. Bjørner. Z3: An efficient smt solver. In CACAS, pages 337--340. 2008. http://z3.codeplex.com/. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. A. Donaldson, A. Kaiser, D. Kroening, and T. Wahl. Symmetry-aware predicate abstraction for shared-variable concurrent programs. In CAV, pages 356--371, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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
  18. E. Farchi, Y. Nir, and S. Ur. Concurrent bug patterns and how to test them. In PDPS, page 7 pp., 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. A. Farzan, A. Holzer, N. Razavi, and H. Veith. Con2colic testing. In FSE, pages 37--47, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. A. Farzan, Z. Kincaid, and A. Podelski. Inductive data flow graphs. In POPL, pages 129--142. 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. M. Glusman, G. Kamhi, S. Mador-Haim, R. Fraer, and M. Vardi. Multiple-counterexample guided iterative abstraction refinement: An industrial evaluation. In TACAS, pages 176--191. 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. A. Gupta, C. Popeea, and A. Rybalchenko. Solving recursion-free horn clauses over li+uif. In APLAS, pages 188--203, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. T. A. Henzinger, R. Jhala, R. Majumdar, and K. L. McMillan. Abstractions from proofs. In POPL, pages 232--244, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. J. Huang, P. 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
  25. N. Jalbert and K. Sen. A trace simplification technique for effective debugging of concurrent programs. In FSE, pages 57--66, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. G. Jin, W. Zhang, D. Deng, B. Liblit, and S. Lu. Automated Concurrency-Bug Fixing. In OSDI, pages 221--236. 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. V. Kahlon and C. Wang. Universal causality graphs: a precise happens- before model for detecting bugs in concurrent programs. In CAV, pages 434--449, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. S. Kashyap and V. Garg. Producing short counterexamples using "crucial events". In CAV, pages 491--503. 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. 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
  30. Z. Manna and P. Wolper. Synthesis of communicating processes from temporal logic specifications. In TOPLAS, pages 68--93, 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. J. Morse, M. Ramalho, L. Cordeiro, D. Nicole, and B. Fischer. ES-BMC 1.22. In TACAS, pages 405--407. 2014. http://www.esbmc.org/.Google ScholarGoogle Scholar
  32. M. Said, C. Wang, Z. Yang, and K. Sakallah. Generating data race witnesses by an smt-based analysis. In NASA Formal Methods, pages 313--327. 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. T. Sakunkonchak, S. Komatsu, and M. Fujita. Using counterexample analysis to minimize the number of predicates for predicate abstraction. In ATVA, pages 553--563. 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T. Anderson. Eraser: A dynamic data race detector for multithreaded programs. ACM Trans. on Computer Systems (TOCS), pages 391--411, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. K. Sen, G. Roşu, and G. Agha. Detecting errors in multithreaded programs by generalized predictive analysis of executions. In FMOODS, pages 211--226, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. R. Sharma, A. V. Nori, and A. Aiken. Interpolants as classifiers. In CAV, pages 71--87, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. N. Sinha and C. Wang. On Interference Abstractions. In POPL, pages 423--434, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Y. Smaragdakis, J. Evans, C. Sadowski, J. Yi, and C. Flanagan. Sound predictive race detection in polynomial time. ACM SIGPLAN Notices, pages 387--400, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. M. Vechev, E. Yahav, and G. Yorsh. Abstraction-guided synthesis of synchronization. In POPL, pages 327--338, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. M. T. Vechev, E. Yahav, and G. Yorsh. Inferring synchronization under limited observability. In TACAS, pages 139--154, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. C. Wang, S. Kundu, M. Ganai, and A. Gupta. Symbolic predictive analysis for concurrent programs. In FM, pages 256--272. 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. C. Wang, B. Li, H. Jin, G. Hachtel, and F. Somenzi. Improving ariadne's bundle by following multiple threads in abstraction refinement. IEEE TCAD, pages 2297--2316, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. C. Wang, R. Limaye, M. Ganai, and A. Gupta. Trace-based symbolic analysis for atomicity violations. In TACAS, pages 328--342. 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Succinct Representation of Concurrent Trace Sets

      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 50, Issue 1
        POPL '15
        January 2015
        682 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2775051
        • Editor:
        • Andy Gill
        Issue’s Table of Contents
        • cover image ACM Conferences
          POPL '15: Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
          January 2015
          716 pages
          ISBN:9781450333009
          DOI:10.1145/2676726

        Copyright © 2015 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 14 January 2015

        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!