Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2491956.2462162acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

CONCURRIT: a domain specific language for reproducing concurrency bugs

Published: 16 June 2013 Publication History
  • Get Citation Alerts
  • 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.
    [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.
    [3]
    C. Bienia, S. Kumar, J. P. Singh, and K. Li. The PARSEC Benchmark Suite: Characterization and Architectural Implications. In PACT, 2008.
    [4]
    S. Burckhardt, P. Kothari, M. Musuvathi, and S. Nagarakatte. A randomized scheduler with probabilistic guarantees of finding bugs. In ASPLOS, 2010.
    [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.
    [6]
    P. Godefroid. Software model checking: The verisoft approach. In Form. Methods Syst. Des., 2005.
    [7]
    G. Gueta, C. Flanagan, E. Yahav, and M. Sagiv. Cartesian partial-order reduction. In SPIN, 2007.
    [8]
    R. Iosif. Symmetry reduction criteria for software model checking. In SPIN, 2002.
    [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.
    [10]
    Jagannath, Luo, and Marinov}jagannath11changeawareV. Jagannath, Q. Luo, and D. Marinov. Change-aware preemption prioritization. In ISSTA, 2011.
    [11]
    N. Jalbert and K. Sen. A trace simplification technique for effective debugging of concurrent programs. In FSE, 2010.
    [12]
    N. Jalbert, C. Pereira, G. Pokam, and K. Sen. RADBench: A concurrency bug benchmark suite. In HOTPAR, 2011.
    [13]
    R. Jhala and R. Majumdar. Software model checking. In ACM Comput. Surv., 2009.
    [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.
    [15]
    S. La Torre, M. Parthasarathy, and G. Parlato. Analyzing recursive programs using a fixed-point calculus. In PLDI, 2009.
    [16]
    B. Long, D. Hoffman, and P. Strooper. Tool support for testing concurrent Java components. In IEEE Trans. Softw. Eng., 2003.
    [17]
    S. Lu, J. Tucek, F. Qin, and Y. Zhou. AVIO: Detecting atomicity violations via access interleaving invariants. In ASPLOS, 2006.
    [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.
    [19]
    M. Musuvathi and S. Qadeer. Iterative context bounding for systematic testing of multithreaded programs. In PLDI, 2007.
    [20]
    M. Musuvathi and S. Qadeer. Fair stateless model checking. In PLDI, 2008.
    [21]
    V. Mutilin. Concurrent testing of Java components using Java PathFinder. In ISoLA, 2006.
    [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.
    [23]
    W. Pugh and N. Ayewah. Unit testing concurrent software. In ASE, 2007.
    [24]
    K. Sen. Race directed random testing of concurrent programs. In PLDI, 2008.
    [25]
    O. Shacham, N. Bronson, A. Aiken, M. Sagiv, M. Vechev, and E. Yahav. Testing atomicity of composed concurrent operations. In OOPSLA, 2011.
    [26]
    Y. Yang, X. Chen, and G. Gopalakrishnan. Inspect: A runtime model checker for multithreaded C programs. Technical Report UUCS-08-004, 2008.

    Cited By

    View all
    • (2022)EventManager — a tool to help students analyse concurrent programsProceedings of the XXVI Brazilian Symposium on Programming Languages10.1145/3561320.3561324(24-31)Online publication date: 6-Oct-2022
    • (2022)Scenic: a language for scenario specification and data generationMachine Learning10.1007/s10994-021-06120-5112:10(3805-3849)Online publication date: 2-Feb-2022
    • (2021)C11Tester: a race detector for C/C++ atomicsProceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3445814.3446711(630-646)Online publication date: 19-Apr-2021
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    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
    • 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
    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]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 16 June 2013

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. concurrency errors
    2. domain-specific languages
    3. software testing

    Qualifiers

    • Research-article

    Conference

    PLDI '13
    Sponsor:

    Acceptance Rates

    PLDI '13 Paper Acceptance Rate 46 of 267 submissions, 17%;
    Overall Acceptance Rate 406 of 2,067 submissions, 20%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)11
    • Downloads (Last 6 weeks)2
    Reflects downloads up to 12 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2022)EventManager — a tool to help students analyse concurrent programsProceedings of the XXVI Brazilian Symposium on Programming Languages10.1145/3561320.3561324(24-31)Online publication date: 6-Oct-2022
    • (2022)Scenic: a language for scenario specification and data generationMachine Learning10.1007/s10994-021-06120-5112:10(3805-3849)Online publication date: 2-Feb-2022
    • (2021)C11Tester: a race detector for C/C++ atomicsProceedings of the 26th ACM International Conference on Architectural Support for Programming Languages and Operating Systems10.1145/3445814.3446711(630-646)Online publication date: 19-Apr-2021
    • (2021)Nekara: Generalized Concurrency Testing2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE)10.1109/ASE51524.2021.9678838(679-691)Online publication date: Nov-2021
    • (2019)Scenic: a language for scenario specification and scene generationProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314633(63-78)Online publication date: 8-Jun-2019
    • (2018)DigHRThe Journal of Supercomputing10.1007/s11227-018-2307-874:6(2684-2704)Online publication date: 1-Jun-2018
    • (2017)SPDebugger: A Fine-Grained Deterministic Debugger for Concurrency CodeIEICE Transactions on Information and Systems10.1587/transinf.2016EDP7388E100.D:3(473-482)Online publication date: 2017
    • (2017)Checking Concurrent Data Structures Under the C/C++11 Memory ModelACM SIGPLAN Notices10.1145/3155284.301874952:8(45-59)Online publication date: 26-Jan-2017
    • (2017)Checking Concurrent Data Structures Under the C/C++11 Memory ModelProceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming10.1145/3018743.3018749(45-59)Online publication date: 26-Jan-2017
    • (2017)A dynamic predictive race detector for C/C++ programsThe Journal of Supercomputing10.1007/s11227-017-1996-873:9(3999-4019)Online publication date: 1-Sep-2017
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media