Delay-bounded scheduling

We provide a new characterization of scheduling nondeterminism by allowing deterministic schedulers to delay their next-scheduled task. In limiting the delays an otherwise-deterministic scheduler is allowed, we discover concurrency bugs efficiently---by exploring few schedules---and robustly---i.e., independent of the number of tasks, context switches, or buffered events. Our characterization elegantly applies to any systematic exploration (e.g., testing, model checking) of concurrent programs with dynamic task-creation. Additionally, we show that certain delaying schedulers admit efficient reductions from concurrent to sequential program analysis.

[1]  Leslie Lamport,et al.  Proving the Correctness of Multiprocess Programs , 1977, IEEE Transactions on Software Engineering.

[2]  Shuvendu K. Lahiri,et al.  Static and Precise Detection of Concurrency Errors in Systems Code Using SMT Solvers , 2009, CAV.

[3]  Madan Musuvathi,et al.  Iterative context bounding for systematic testing of multithreaded programs , 2007, PLDI '07.

[4]  Alan J. Hu,et al.  Context-Bounded Translations for Concurrent Software: An Empirical Evaluation , 2010, SPIN.

[5]  Salvatore La Torre,et al.  Model-Checking Parameterized Concurrent Programs Using Linear Interfaces , 2010, CAV.

[6]  Mohamed Faouzi Atig,et al.  Context-Bounded Analysis for Concurrent Programs with Dynamic Creation of Threads , 2009, TACAS.

[7]  Martín Abadi,et al.  The Existence of Refinement Mappings , 1988, LICS.

[8]  Rupak Majumdar,et al.  Algorithmic verification of asynchronous programs , 2010, TOPL.

[9]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[10]  Willy Zwaenepoel,et al.  Flash: An efficient and portable Web server , 1999, USENIX Annual Technical Conference, General Track.

[11]  Walter Oney,et al.  Programming the Microsoft Windows Driver Model , 1999 .

[12]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[13]  Sebastian Burckhardt,et al.  Preemption Sealing for Efficient Concurrency Testing , 2010, TACAS.

[14]  Christos H. Papadimitriou,et al.  Computational complexity , 1993 .

[15]  Dinghao Wu,et al.  KISS: keep it simple and sequential , 2004, PLDI '04.

[16]  Jan Vitek,et al.  One Stack to Run Them All - Reducing Concurrent Analysis to Sequential Analysis under Priority Scheduling , 2010, SPIN.

[17]  EDDIE KOHLER,et al.  The click modular router , 2000, TOCS.

[18]  Edmund M. Clarke,et al.  Design and Synthesis of Synchronization Skeletons Using Branching-Time Temporal Logic , 1981, Logic of Programs.

[19]  Jesse James Garrett Ajax: A New Approach to Web Applications , 2007 .

[20]  Thomas Ball,et al.  Finding and Reproducing Heisenbugs in Concurrent Programs , 2008, OSDI.

[21]  Mahesh Viswanathan,et al.  Model Checking Multithreaded Programs with Asynchronous Atomic Methods , 2006, CAV.

[22]  Koushik Sen,et al.  CalFuzzer: An Extensible Active Testing Framework for Concurrent Programs , 2009, CAV.

[23]  Salvatore La Torre,et al.  Reducing Context-Bounded Concurrent Reachability to Sequential Reachability , 2009, CAV.

[24]  K. Rustan M. Leino,et al.  Weakest-precondition of unstructured programs , 2005, PASTE '05.

[25]  Greg Kroah-Hartman,et al.  Linux Device Drivers, 3rd Edition , 2005 .

[26]  Thomas W. Reps,et al.  Reducing Concurrent Analysis Under a Context Bound to Sequential Analysis , 2008, CAV.

[27]  Jakob Rehof,et al.  Context-Bounded Model Checking of Concurrent Software , 2005, TACAS.

[28]  Rupak Majumdar,et al.  Interprocedural analysis of asynchronous programs , 2007, POPL '07.

[29]  Michael Emmi,et al.  Delay-Bounded Scheduling A Canonical Characterization of Scheduler , 2010 .

[30]  K. Rustan M. Leino,et al.  BoogiePL: A typed procedural language for checking object-oriented programs , 2005 .

[31]  Salvatore La Torre,et al.  Sequentializing Parameterized Programs , 2012, FIT.

[32]  David E. Culler,et al.  System architecture directions for networked sensors , 2000, SIGP.

[33]  Walter Oney Programming the Microsoft Windows Driver Model, Second Edition , 2002 .

[34]  Thomas W. Reps,et al.  Reducing concurrent analysis under a context bound to sequential analysis , 2009, Formal Methods Syst. Des..

[35]  Greg Kroah-Hartman,et al.  Linux Device Drivers , 1998 .

[36]  Patrice Godefroid,et al.  Model checking for programming languages using VeriSoft , 1997, POPL '97.

[37]  Eitan Farchi,et al.  Framework for testing multi‐threaded Java programs , 2003, Concurr. Comput. Pract. Exp..

[38]  G. Ramalingam,et al.  Context-sensitive synchronization-sensitive analysis is undecidable , 2000, TOPL.

[39]  Pravesh Kothari,et al.  A randomized scheduler with probabilistic guarantees of finding bugs , 2010, ASPLOS XV.