skip to main content
10.1145/2509136.2509508acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Input-covering schedules for multithreaded programs

Published: 29 October 2013 Publication History

Abstract

We propose constraining multithreaded execution to small sets of input-covering schedules, which we define as follows: given a program P, we say that a set of schedules ∑ covers all inputs of program P if, when given any input, P's execution can be constrained to some schedule in ∑ and still produce a semantically valid result.
Our approach is to first compute a small ∑ for a given program P, and then, at runtime, constrain P's execution to always follow some schedule in ∑, and never deviate. We have designed an algorithm that uses symbolic execution to systematically enumerate a set of input-covering schedules, ∑. To deal with programs that run for an unbounded length of time, we partition execution into bounded epochs, find input-covering schedules for each epoch in isolation, and then piece the schedules together at runtime. We have implemented this algorithm along with a constrained execution runtime for pthreads programs, and we report results
Our approach has the following advantage: because all possible runtime schedules are known a priori, we can seek to validate the program by thoroughly verifying each schedule in ∑, in isolation, without needing to reason about the huge space of thread interleavings that arises due to conventional nondeterministic execution.

References

[1]
A. Aiken and D. Gay. Barrier Inference. In POPL, 1998.
[2]
S. Anand, C. S. Păsăreanu, and W. Visser. Symbolic Execution with Abstract Subsumption Checking. In SPIN, 2006.
[3]
T. Bergan, J. Devietti, N. Hunt, and L. Ceze. The Deterministic Execution Hammer: How Well Does it Actually Pound Nails? In Workshop on Determinism and Correctness in Parallel Programming (WoDet), 2011.
[4]
T. Bergan, D. Grossman, and L. Ceze. Symbolic Execution of Multithreaded Programs from Arbitrary Program Contexts. Technical Report UW-CSE-13-08-01, Univ. of Washington.
[5]
T. Bergan, N. Hunt, L. Ceze, and S. Gribble. Deterministic Process Groups in dOS. In OSDI, 2010.
[6]
M. D. Bond and K. S. McKinley. Probabilistic Calling Context. In OOPSLA, 2007.
[7]
S. Bucur, V. Ureche, C. Zamfir, and G. Candea. Parallel Symbolic Execution for Automated Real-World Software Testing. In EuroSys, 2011.
[8]
S. Burckhardt, P. Kothari, M. Musuvathi, and S. Nagarakatte. A Randomized Scheduler with Probabilistic Guarantees of Finding Bugs. In ASPLOS, 2010.
[9]
C. Cadar, D. Dunbar, and D. Engler. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs. In OSDI, 2008.
[10]
M. Costa, M. Castro, L. Zhou, L. Zhang, and M. Peinado. Bouncer: Securing Software by Blocking Bad Input. In SOSP, 2007.
[11]
H. Cui, J. Wu, C. che Tsai, and J. Yang. Stable Deterministic Multithreading Through Schedule Memoization. In OSDI, 2010.
[12]
H. Cui, J. Wu, J. Gallagher, H. Guo, and J. Yang. Efficient Deterministic Multithreading through Schedule Relaxation. In SOSP, 2011.
[13]
L. Effinger-Dean, H.-J. Boehm, P. Joisha, and D. Chakrabarti. Extended Sequential Reasoning for Data-Race-Free Programs. In Workshop on Memory Systems Performance and Correctness (MSPC), 2011.
[14]
C. Flanagan and P. Godefroid. Dynamic Partial-Order Reduction for Model Checking Software. In POPL, 2005.
[15]
V. Ganesh and D. L. Dill. A Decision Procedure for Bit-vectors and Arrays. In CAV, 2007.
[16]
P. Godefroid. Compositional Dynamic Test Generation. In POPL, 2007.
[17]
P. Godefroid. Higher-Order Test Generation. In PLDI, 2011.
[18]
P. Godefroid and D. Luchaup. Automatic Partial Loop Summarization in Dynamic Test Generation. In ISSTA, 2011.
[19]
T. Hansen, P. Schachte, and H. Sondergaard. State Joining and Splitting for the Symbolic Execution of Binaries. In Intl. Conf. on Runtime Verification (RV), 2009.
[20]
V. Kahlon, C. Wang, and A. Gupta. Monotonic Partial Order Reduction: An Optimal Symbolic Partial Order Reduction Technique. In CAV, 2007.
[21]
V. Kuznetsov, J. Kinder, S. Bucur, and G. Candea. Efficient State Merging in Symbolic Execution. In PLDI, 2012.
[22]
S. La Torre, P. Madhusudan, and G. Parlato. Context-Bounded Analysis of Concurrent Queue Systems. In TACAS, 2008.
[23]
S. La Torre, P. Madhusudan, and G. Parlato. Reducing Context-Bounded Concurrent Reachability to Sequential Reachability. In CAV, 2009.
[24]
O. Laadan, N. Viennot, and J. Nieh. Transparent, Lightweight Application Execution Replay on Commodity Multiprocessor Operating Systems. In SIGMETRICS, 2010.
[25]
A. Lal and T. Reps. Reducing Concurrent Analysis Under a Context Bound to Sequential Analysis. In CAV, 2008.
[26]
L. Lamport. Time, Clocks, and the Ordering of Events in a Distributed System. Communications of the ACM, 21(7), July 1978.
[27]
C. Lattner. Macroscopic Data Structure Analysis and Optimization. PhD thesis, Computer Science Dept., University of Illinois at Urbana-Champaign, Urbana, IL, May 2005.
[28]
Y. A. Liu and S. D. Stoller. From Recursion to Iteration: What are the Optimizations? In PEPM, 1999.
[29]
B. Lucia, L. Ceze, and K. Strauss. ColorSafe: Architectural Support for Debugging and Dynamically Avoiding Multi-Variable Atomicity Violations. In ISCA, 2010.
[30]
B. Lucia, J. Devietti, K. Strauss, and L. Ceze. Atom-Aid: Detecting and Surviving Atomicity Violations. In ISCA, 2008.
[31]
M. Musuvathi and S. Qadeer. Iterative Context Bounding for Systematic Testing of Multithreaded Programs. In PLDI, 2007.
[32]
M. Musuvathi, S. Qadeer, T. Ball, G. Basler, P. A. Nainar, and I. Neamtiu. Finding and Reproducing Heisenbugs in Concurrent Programs. In OSDI, 2008.
[33]
G. Naumovich, G. S. Avrunin, and L. A. Clarke. An Efficient Algorithm for Computing MHP Information for Concurrent Java Programs. In FSE, 1999.
[34]
M. Olszewski, J. Ansel, and S. Amarasinghe. Kendo: Efficient Deterministic Multithreading in Software. In ASPLOS, 2009.
[35]
S. Park, S. Lu, and Y. Zhou. CTrigger: Exposing Atomicity Violation Bugs from their Hiding Places. In ASPLOS, 2009.
[36]
S. Qadeer and D. Wu. KISS: Keep It Simple and Sequential. In PLDI, 2005.
[37]
M. Rinard. Analysis of Multithreaded Programs. In Static Analysis Symposium (SAS), 2001.
[38]
S. Tobin-Hochstadt and D. Van Horn. Higher-Order Symbolic Execution via Contracts. In OOPSLA, 2012.
[39]
J. Wu, Y. Tang, G. Hu, H. Cui, and J. Yang. Sound and Precise Analysis of Parallel Programs through Schedule Specialization. In PLDI, 2012.
[40]
M. Xu, M. Hill, and R. Bodik. A Regulated Transitive Reduction for Longer Memory Race Recording. In ASPLOS, 2006.
[41]
J. Yang, H. Cui, and J. Wu. Determinism Is Overrated: What Really Makes Multithreaded Programs Hard to Get Right and What Can Be Done About It. In HotPar, 2013.
[42]
Y. Zhang and E. Duesterwald. Barrier Matching for Programs With Textually Unaligned Barriers. In PPoPP, 2007.

Cited By

View all
  • (2021)Flaky test detection in Android via event order explorationProceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3468264.3468584(367-378)Online publication date: 20-Aug-2021
  • (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
  • (2020)Extracting safe thread schedules from incomplete model checking resultsInternational Journal on Software Tools for Technology Transfer (STTT)10.1007/s10009-020-00575-y22:5(565-581)Online publication date: 1-Oct-2020
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA '13: Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
October 2013
904 pages
ISBN:9781450323741
DOI:10.1145/2509136
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: 29 October 2013

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. constrained execution
  2. determinism
  3. static analysis
  4. symbolic execution

Qualifiers

  • Research-article

Conference

SPLASH '13
Sponsor:

Acceptance Rates

OOPSLA '13 Paper Acceptance Rate 50 of 189 submissions, 26%;
Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)3
  • Downloads (Last 6 weeks)0
Reflects downloads up to 19 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2021)Flaky test detection in Android via event order explorationProceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3468264.3468584(367-378)Online publication date: 20-Aug-2021
  • (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
  • (2020)Extracting safe thread schedules from incomplete model checking resultsInternational Journal on Software Tools for Technology Transfer (STTT)10.1007/s10009-020-00575-y22:5(565-581)Online publication date: 1-Oct-2020
  • (2018)Scheduling constraint based abstraction refinement for weak memory modelsProceedings of the 33rd ACM/IEEE International Conference on Automated Software Engineering10.1145/3238147.3238223(645-655)Online publication date: 3-Sep-2018
  • (2018)Concurrency verification with maximal path causalityProceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3236024.3236048(366-376)Online publication date: 26-Oct-2018
  • (2016)Parallel data race detection for task parallel programs with locksProceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering10.1145/2950290.2950329(833-845)Online publication date: 1-Nov-2016
  • (2015)Paxos made transparentProceedings of the 25th Symposium on Operating Systems Principles10.1145/2815400.2815427(105-120)Online publication date: 4-Oct-2015
  • (2015)RepFrameProceedings of the 6th Asia-Pacific Workshop on Systems10.1145/2797022.2797033(1-9)Online publication date: 27-Jul-2015
  • (2015)High-performance determinism with total store order consistencyProceedings of the Tenth European Conference on Computer Systems10.1145/2741948.2741960(1-13)Online publication date: 17-Apr-2015
  • (2015)Input-Driven Active Testing of Multi-threaded Programs2015 Asia-Pacific Software Engineering Conference (APSEC)10.1109/APSEC.2015.34(246-253)Online publication date: Dec-2015
  • 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