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

Concurrency testing using schedule bounding: an empirical study

Published: 06 February 2014 Publication History
  • Get Citation Alerts
  • Abstract

    We present the first independent empirical study on schedule bounding techniques for systematic concurrency testing (SCT). We have gathered 52 buggy concurrent software benchmarks, drawn from public code bases, which we call SCTBench. We applied a modified version of an existing concurrency testing tool to SCTBench to attempt to answer several research questions, including: How effective are the two main schedule bounding techniques, preemption bounding and delay bounding, at bug finding? What challenges are associated with applying SCT to existing code? How effective is schedule bounding compared to a naive random scheduler at finding bugs? Our findings confirm that delay bounding is superior to preemption bounding and that schedule bounding is more effective at finding bugs than unbounded depth-first search. The majority of bugs in SCTBench can be exposed using a small bound (1-3), supporting previous claims, but there is at least one benchmark that requires 5 preemptions. Surprisingly, we found that a naive random scheduler is at least as effective as schedule bounding for finding bugs. We have made SCTBench and our tools publicly available for reproducibility and use in future work.

    References

    [1]
    A. Bessey et al. A few billion lines of code later: using static analysis to find bugs in the real world. Commun. ACM, 53(2): 66--75, 2010.
    [2]
    C. Bienia. Benchmarking Modern Multiprocessors. PhD thesis, Princeton University, 2011.
    [3]
    H.-J. Boehm. How to miscompile programs with "benign" data races. In HotPar, pages 1--6, 2011.
    [4]
    S. Burckhardt, P. Kothari, M. Musuvathi, and S. Nagarakatte. A randomized scheduler with probabilistic guarantees of finding bugs. In ASPLOS, pages 167--178, 2010.
    [5]
    K. E. Coons, M. Musuvathi, and K. S. McKinley. Bounded partial-order reduction. In OOPSLA, pages 833--848, 2013.
    [6]
    L. Cordeiro and B. Fischer. Verifying multi-threaded software using SMT-based context-bounded model checking. In ICSE, pages 331--340, 2011.
    [7]
    M. Emmi, S. Qadeer, and Z. Rakamaric. Delay-bounded scheduling. In POPL, pages 411--422, 2011.
    [8]
    C. Flanagan and S. N. Freund. FastTrack: efficient and precise dynamic race detection. In PLDI, pages 121--133, 2009.
    [9]
    C. Flanagan and P. Godefroid. Dynamic partial-order reduction for model checking software. In POPL, pages 110--121, 2005.
    [10]
    M. Frigo, C. E. Leiserson, and K. H. Randall. The implementation of the Cilk-5 multithreaded language. In PLDI, pages 212--223, 1998.
    [11]
    P. Godefroid. Partial-Order Methods for the Verification of Concurrent Systems. Springer, 1996.
    [12]
    P. Godefroid. Model checking for programming languages using VeriSoft. In POPL, pages 174--186, 1997.
    [13]
    G. J. Holzmann. On limits and possibilities of automated protocol analysis. In PSTV, pages 339--344, 1987.
    [14]
    G. J. Holzmann and M. Florian. Model checking with bounded context switching. Formal Asp. Comput., 23(3):365--389, 2011.
    [15]
    J. Huang and C. Zhang. An efficient static trace simplification technique for debugging concurrent programs. In SAS, pages 163--179, 2011.
    [16]
    N. Jalbert and K. Sen. A trace simplification technique for effective debugging of concurrent programs. In FSE, FSE '10, pages 57--66, 2010.
    [17]
    N. Jalbert, C. Pereira, G. Pokam, and K. Sen. RADBench: a concurrency bug benchmark suite. In HotPar, pages 1--6, 2011.
    [18]
    B. Kasikci, C. Zamfir, and G. Candea. Data races vs. data race bugs: telling the difference with Portend. In ASPLOS, pages 185--198, 2012.
    [19]
    B. Krena, Z. Letko, T. Vojnar, and S. Ur. A platform for search-based testing of concurrent software. In PADTAD, pages 48--58, 2010.
    [20]
    A. Lal and T. W. Reps. Reducing concurrent analysis under a context bound to sequential analysis. Formal Methods in System Design, 35(1):73--97, 2009.
    [21]
    B. Lewis and D. J. Berg. Multithreaded programming with Pthreads. Prentice-Hall, 1998.
    [22]
    C.-K. Luk et al. Pin: building customized program analysis tools with dynamic instrumentation. In PLDI, pages 190--200, 2005.
    [23]
    M. Musuvathi and S. Qadeer. Iterative context bounding for systematic testing of multithreaded programs. In PLDI, pages 446--455, 2007.
    [24]
    M. Musuvathi and S. Qadeer. Partial-order reduction for context-bounded state exploration. Technical Report MSR- TR-2007-12, Microsoft Research, 2007.
    [25]
    M. Musuvathi and S. Qadeer. Fair stateless model checking. In PLDI, pages 362--371, 2008.
    [26]
    M. Musuvathi et al. Finding and reproducing Heisenbugs in concurrent programs. In OSDI, pages 267--280, 2008.
    [27]
    S. Nagarakatte, S. Burckhardt, M. M. Martin, and M. Musu- vathi. Multicore acceleration of priority-based schedulers for concurrency bug detection. In PLDI, pages 543--554, 2012.
    [28]
    S. Narayanasamy et al. Automatically classifying benign and harmful data races using replay analysis. In PLDI, pages 22--31, 2007.
    [29]
    S. Park, S. Lu, and Y. Zhou. CTrigger: exposing atomicity violation bugs from their hiding places. In ASPLOS, pages 25--36, 2009.
    [30]
    K. Sen. Race directed random testing of concurrent programs. In PLDI, pages 11--21, 2008.
    [31]
    H. Sutter and J. Larus. Software and the concurrency revolution. ACM Queue, 3(7):54--62, 2005.
    [32]
    C. Wang, M. Said, and A. Gupta. Coverage guided systematic concurrency testing. In ICSE, pages 221--230, 2011.
    [33]
    S. C. Woo et al. The SPLASH-2 programs: characterization and methodological considerations. In ISCA, pages 24--36, 1995.
    [34]
    Y. Yang, X. Chen, and G. Gopalakrishnan. Inspect: A run- time model checker for multithreaded C programs. Technical Report UUCS-08-004, University of Utah, 2008.
    [35]
    J. Yu and S. Narayanasamy. A case for an interleaving constrained shared-memory multi-processor. In ISCA, pages 325--336, 2009.
    [36]
    J. Yu, S. Narayanasamy, C. Pereira, and G. Pokam. Maple: a coverage-driven testing tool for multithreaded programs. In OOPSLA, pages 485--502, 2012.

    Cited By

    View all
    • (2023)Probabilistic Concurrency Testing for Weak Memory ProgramsProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3575693.3575729(603-616)Online publication date: 27-Jan-2023
    • (2023)SegFuzz: Segmentizing Thread Interleaving to Discover Kernel Concurrency Bugs through Fuzzing2023 IEEE Symposium on Security and Privacy (SP)10.1109/SP46215.2023.10179398(2104-2121)Online publication date: May-2023
    • (2023)Reconciling Preemption Bounding with DPORTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-031-30823-9_5(85-104)Online publication date: 22-Apr-2023
    • Show More Cited By

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    PPoPP '14: Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
    February 2014
    412 pages
    ISBN:9781450326568
    DOI:10.1145/2555243
    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 the author(s) 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: 06 February 2014

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. concurrency
    2. context bounding
    3. stateless model checking
    4. systematic concurrency testing

    Qualifiers

    • Research-article

    Conference

    PPoPP '14
    Sponsor:

    Acceptance Rates

    PPoPP '14 Paper Acceptance Rate 28 of 184 submissions, 15%;
    Overall Acceptance Rate 230 of 1,014 submissions, 23%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)34
    • Downloads (Last 6 weeks)13

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Probabilistic Concurrency Testing for Weak Memory ProgramsProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 210.1145/3575693.3575729(603-616)Online publication date: 27-Jan-2023
    • (2023)SegFuzz: Segmentizing Thread Interleaving to Discover Kernel Concurrency Bugs through Fuzzing2023 IEEE Symposium on Security and Privacy (SP)10.1109/SP46215.2023.10179398(2104-2121)Online publication date: May-2023
    • (2023)Reconciling Preemption Bounding with DPORTools and Algorithms for the Construction and Analysis of Systems10.1007/978-3-031-30823-9_5(85-104)Online publication date: 22-Apr-2023
    • (2022)Controlled concurrency testing via periodical schedulingProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510178(474-486)Online publication date: 21-May-2022
    • (2021)GoAT: Automated Concurrency Analysis and Debugging Tool for Go2021 IEEE International Symposium on Workload Characterization (IISWC)10.1109/IISWC53511.2021.00023(138-150)Online publication date: Nov-2021
    • (2020)Testing consensus implementations using communication closureProceedings of the ACM on Programming Languages10.1145/34282784:OOPSLA(1-29)Online publication date: 13-Nov-2020
    • (2020)Parallel and distributed bounded model checking of multi-threaded programsProceedings of the 25th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming10.1145/3332466.3374529(202-216)Online publication date: 19-Feb-2020
    • (2020)On Scheduling Constraint Abstraction for Multi-Threaded Program VerificationIEEE Transactions on Software Engineering10.1109/TSE.2018.286412246:5(549-565)Online publication date: 1-May-2020
    • (2019)Trace aware random testing for distributed systemsProceedings of the ACM on Programming Languages10.1145/33606063:OOPSLA(1-29)Online publication date: 10-Oct-2019
    • (2019)Sparse record and replay with controlled schedulingProceedings of the 40th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/3314221.3314635(576-593)Online publication date: 8-Jun-2019
    • 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