dynamic partial order reduction for model checking
play

Dynamic Partial-Order Reduction for Model Checking Software Cormac - PowerPoint PPT Presentation

Dynamic Partial-Order Reduction for Model Checking Software Cormac Flanagan Patrice Godefroid UC Santa Cruz Bell Labs Presented by: Ulrich Mller Model Checking Given a multithreaded program Wed like to check for deadlocks and


  1. Dynamic Partial-Order Reduction for Model Checking Software Cormac Flanagan Patrice Godefroid UC Santa Cruz Bell Labs Presented by: Ulrich Müller

  2. Model Checking • Given a multithreaded program • We‘d like to check for deadlocks and safety property violations – Proove it! – Ideally in a push-button fashion – Directly using source code (implementation vs abstraction) • Idea: – Exhaustive state space exploration – Here: • Threads are subdivided into transitions • → All transition interleavings over all threads

  3. Naïve Algorithm • Let‘s do a depth-first search in the state space • Pros: – Covers the whole state space, hence we have certainty of our software correctness • Cons: – Requires a finite state-space – Requires an acyclic state-space – Can be immensely time-intensive due to the state-explosion problem

  4. State-Explosion Problem This is how the global state space looks: Given n = 3 independent threads: (r 0 , s 0 , t 0 ) r 1 s 1 t 1 (r 0 , s 0 , t 1 ) r 0 s 0 t 0 (r 0 , s 1 , t 1 ) ! n Possible Interleavings: (r 1 , s 1 , t 1 ) (Distinct paths in state graph) ⎛ ⎞ n n ∑ ⎜ ⎟ = n 2 ⎜ ⎟ Number of states: ⎝ ⎠ i = 0 i

  5. Partial-Order Reduction • The idea: – Use independence between transitions to reduce the state space Two transitions are independent if both of the following hold: t 1 t 2 •They neither disable nor enable each other and •They commute t 2 t 1

  6. Partial-Order Reduction • Since independent transitions commute, we can swap two adjacent ones in a given trace • Leads to an equivalence class of traces • We only need to check one of those traces per equivalence class! Also called Model Checking using Representatives

  7. Partial-Order Reduction Watch out: • Why the name? These are transitions! – Natural representation of transitions in a concurrent system isn‘t a trace (linear order) ... ... but a partial order Linear order By using linear orders, we‘re unnessecarily adding information to the relation! Partial order

  8. Partial-Order Reduction • In practice model checker only has a local view of the state graph • In a given state, it has to evaluate the minimal subset of enabled transitions to follow that still guarantees soundness

  9. Persistent Transitions • An enabled transition b in the state s is a persistent transition, if it is independent with every transition r i s reachable from s without executing b r 1 b • If a transition b is persistent, it is r 2 sound to only explore b independent r i • Persistent sets: generalization to many threads Based on Flanagan‘s presentation of the paper

  10. Static POR • Use static source code analysis to determine the persistent set of a state as soon as it is reached • Problem – Static analysis is approximate and doesn‘t catch all independency – For example, whether two pointers refer to the same location is determined conservatively • This is where dynamic partial order reduction shines

  11. Dynamic POR • Using runtime information, resolving aliasing suddenly becomes easy • Approach: – Execute an arbitrary trace to completion – During this execution, take note of possible conflicts and mark them for later backtracking – Persistent set is built on-the-fly

  12. R S DPOR Algorithm s 1 x = 1 y = 1 r 1 x,y,g 0,0,0 s 2 r 2 g += 2 g *= 2 y=1 x=1 {S} 1,0,0 0,1,0 x=1 y=1 g*=2 g+=2 {S,R} {S} 1,0,2 1,1,0 0,1,0 y=1 g*=2 g+=2 x=1 Summ Summary: ary: 1,1,2 1,1,0 •Analyzed 3 of the 6 possible traces g+=2 •Ideal POR would analyze 2 g*=2 •Persistent sets constructed dynamically! 1,1,4 1,1,2

  13. Summary • Pros – No approximate/expensive/complicated static analysis – Supports pointer-rich data structures – Supports dynamic creation of threads/objects • Cons – Finite state space – Acyclic state space • Can be extended to be stateful, but is memory expensive • Open questions – Liveness properties and LTL?

  14. Questions?

  15. Implementations Inspect: A Framework for Dynamic Verification of Multithreaded C Programs Sadly, very sparsely documented. http://www.cs.utah.edu/~yuyang/inspect/ Cute: A Concolic Unit Testing Engine for C and Java Uses a simplified version of DPOR to guide symbolic model checking. http://osl.cs.uiuc.edu/~ksen/cute/

  16. DPOR Algorithm From a lecture of Theo Ruys on the subject

  17. Indexer Benchmark 10000000 1000000 100000 Number of transitions 10000 1000 100 10 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Number of threads Dynamic POR, stateless, sleep sets Dynamic POR, stateless, no sleep sets Static POR, stateless, sleep sets Static POR, stateless, no sleep sets Static POR, stateful, sleep sets Static POR, stateful, no sleep sets From Flanagan‘s presentation of the paper

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend