skip to main content
research-article

CONCURRIT: a domain specific language for reproducing concurrency bugs

Authors Info & Claims
Published:16 June 2013Publication History
Skip Abstract Section

Abstract

We present CONCURRIT, a domain-specific language (DSL) for reproducing concurrency bugs. Given some partial information about the nature of a bug in an application, a programmer can write a CONCURRIT script to formally and concisely specify a set of thread schedules to explore in order to find a schedule exhibiting the bug. Further, the programmer can specify how these thread schedules should be searched to find a schedule that reproduces the bug. We implemented CONCURRIT as an embedded DSL in C++, which uses manual or automatic source instrumentation to partially control the scheduling of the software under test. Using CONCURRIT, we were able to write concise tests to reproduce concurrency bugs in a variety of benchmarks, including the Mozilla's SpiderMonkey JavaScript engine, Memcached, Apache's HTTP server, and MySQL.

References

  1. G. Altekar and I. Stoica. ODR: Output-deterministic replay for multicore debugging. In SOSP, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. T. Ball, S. Burckhardt, K. Coons, M. Musuvathi, , and S. Qadeer. Preemption sealing for efficient concurrency testing. Technical Report MSR-TR-2009-143, 2009.Google ScholarGoogle Scholar
  3. C. Bienia, S. Kumar, J. P. Singh, and K. Li. The PARSEC Benchmark Suite: Characterization and Architectural Implications. In PACT, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. S. Burckhardt, P. Kothari, M. Musuvathi, and S. Nagarakatte. A randomized scheduler with probabilistic guarantees of finding bugs. In ASPLOS, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. P. Godefroid. Partial-order methods for the verification of concurrent systems: an approach to the state-explosion problem. Springer-Verlag Inc., 1996. URL citeseer.ist.psu.edu/godefroid95partialorder.html. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. P. Godefroid. Software model checking: The verisoft approach. In Form. Methods Syst. Des., 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. G. Gueta, C. Flanagan, E. Yahav, and M. Sagiv. Cartesian partial-order reduction. In SPIN, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. R. Iosif. Symmetry reduction criteria for software model checking. In SPIN, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Jagannath, Gligoric, Jin, Luo, Rosu, and Marinov}jagannath11imunitV. Jagannath, M. Gligoric, D. Jin, Q. Luo, G. Rosu, and D. Marinov. Improved multithreaded unit testing. In ESEC/FSE, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Jagannath, Luo, and Marinov}jagannath11changeawareV. Jagannath, Q. Luo, and D. Marinov. Change-aware preemption prioritization. In ISSTA, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. N. Jalbert and K. Sen. A trace simplification technique for effective debugging of concurrent programs. In FSE, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. N. Jalbert, C. Pereira, G. Pokam, and K. Sen. RADBench: A concurrency bug benchmark suite. In HOTPAR, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. R. Jhala and R. Majumdar. Software model checking. In ACM Comput. Surv., 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. Kim, Y. Kim, and H. Kim. A comparative study of software model checkers as unit testing tools: An industrial case study. In IEEE Trans. Softw. Eng., 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. S. La Torre, M. Parthasarathy, and G. Parlato. Analyzing recursive programs using a fixed-point calculus. In PLDI, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. B. Long, D. Hoffman, and P. Strooper. Tool support for testing concurrent Java components. In IEEE Trans. Softw. Eng., 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. S. Lu, J. Tucek, F. Qin, and Y. Zhou. AVIO: Detecting atomicity violations via access interleaving invariants. In ASPLOS, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. C.-K. Luk, R. Cohn, R. Muth, H. Patil, A. Klauser, G. Lowney, S. Wallace, V. J. Reddi, and K. Hazelwood. Pin: Building customized program analysis tools with dynamic instrumentation. In PLDI, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. M. Musuvathi and S. Qadeer. Iterative context bounding for systematic testing of multithreaded programs. In PLDI, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. M. Musuvathi and S. Qadeer. Fair stateless model checking. In PLDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. V. Mutilin. Concurrent testing of Java components using Java PathFinder. In ISoLA, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. S. Park, Y. Zhou, W. Xiong, Z. Yin, R. Kaushik, K. H. Lee, and S. Lu. PRES: Probabilistic replay with execution sketching on multiprocessors. In SOSP, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. W. Pugh and N. Ayewah. Unit testing concurrent software. In ASE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. K. Sen. Race directed random testing of concurrent programs. In PLDI, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. O. Shacham, N. Bronson, A. Aiken, M. Sagiv, M. Vechev, and E. Yahav. Testing atomicity of composed concurrent operations. In OOPSLA, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Y. Yang, X. Chen, and G. Gopalakrishnan. Inspect: A runtime model checker for multithreaded C programs. Technical Report UUCS-08-004, 2008.Google ScholarGoogle Scholar

Index Terms

  1. CONCURRIT: a domain specific language for reproducing concurrency bugs

        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 48, Issue 6
          PLDI '13
          June 2013
          515 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/2499370
          Issue’s Table of Contents
          • cover image ACM Conferences
            PLDI '13: Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation
            June 2013
            546 pages
            ISBN:9781450320146
            DOI:10.1145/2491956

          Copyright © 2013 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: 16 June 2013

          Check for updates

          Qualifiers

          • research-article

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader