Delay-Bounded Scheduling A Canonical Characterization of Scheduler

We provide a new characterization of scheduling nondeterminism by allowing deterministic schedulers to delay their next-scheduled task. By limiting the number of delays that an otherwise-deterministic scheduler is allowed, a bounded-exploration of a concurrent program can be done efficiently—by reduction to an equivalent exploration of a sequential program—and robustly—i.e., not dependent on bounds having to do with the number of threads, context switches, preemptions, or buffered events. Our characterization elegantly handles both event-driven asynchronous programs, and multithreaded programs with preemption and dynamic thread creation.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[22]  Robert Szewczyk,et al.  System architecture directions for networked sensors , 2000, ASPLOS IX.

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

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

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

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

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

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

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

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