Abstract

A dynamic partial order reduction (DPOR) algorithm is optimal when it always explores at most one representative per Mazurkiewicz trace. Existing literature suggests that the reduction obtained by the non-optimal, state-of-the-art Source-DPOR (SDPOR) algorithm is comparable to optimal DPOR. We show the first program with $$\mathop {\mathcal {O}} (n)$$ Mazurkiewicz traces where SDPOR explores $$\mathop {\mathcal {O}} (2^n)$$ redundant schedules (as this paper was under review, we were made aware of the recent publication of another paper [3] which contains an independently-discovered example program with the same characteristics). We furthermore identify the cause of this blow-up as an NP-hard problem. Our main contribution is a new approach, called Quasi-Optimal POR, that can arbitrarily approximate an optimal exploration using a provided constant k. We present an implementation of our method in a new tool called Dpu using specialised data structures. Experiments with Dpu, including Debian packages, show that optimality is achieved with low values of k, outperforming state-of-the-art tools.

Highlights

  • Dynamic partial-order reduction (DPOR) [10,1,19] is a mature approach to mitigate the state explosion problem in stateless model checking of multithreaded programs

  • dynamic partial order reduction (DPOR) are based on Mazurkiewicz trace theory [13], a true-concurrency semantics where the set of executions of the program is partitioned into equivalence classes known as Mazurkiewicz traces (M-traces)

  • We prove that computing alternatives in an optimal DPOR is an NP-complete problem

Read more

Summary

Introduction

Dynamic partial-order reduction (DPOR) [10,1,19] is a mature approach to mitigate the state explosion problem in stateless model checking of multithreaded programs. Xi = 0 interferes with exactly one writer thread, depending on the value of i Since SDPOR does not track relations between dependent statements, it will naively try to reverse the race between xi = 0 and all writer threads, which results in exploring O(2n) executions. In this program, exploring only six traces requires understanding the entanglement between both interferences as the order in which the first is reversed determines the second. Proofs for all our formal results are available in the appendix of this manuscript

Preliminaries
Unfolding-Based DPOR
Complexity
New Algorithm for Computing Alternatives
Computing Causality and Conflict for PES events
Computing Causality and Conflict for Tree Nodes
Computing Conflicting Extensions
Experimental Evaluation
Comparison to SDPOR
Evaluation of the Tree-based Algorithms
50 Threads
Evaluation Against the State-of-the-art on System Code
Profiling a Stateless POR
Conclusion
A Additional Basic Definitions
B General Lemmas
C Termination Proofs
D Completeness Proofs
E Complexity Proofs
F Proofs for Causality Trees
G Experiments with the SV-COMP’17 Benchmarks
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call