Sound transaction-based reduction without cycle detection

  • Authors:
  • Vladimir Levin;Robert Palmer;Shaz Qadeer;Sriram K. Rajamani

  • Affiliations:
  • Microsoft;University of Utah;Microsoft Research;Microsoft Research

  • Venue:
  • SPIN'05 Proceedings of the 12th international conference on Model Checking Software
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

Partial-order reduction is widely used to alleviate state-space explosion in model checkers for concurrent programs. Traditional approaches to partial-order reduction are based on ample sets. Natural ample sets can be computed for threads that communicate with each other predominantly through message queues. For threads that communicate with shared memory using locks for synchronization, Lipton's theory of reduction provides a promising way to aggregate several fine-grained transitions into larger transactions. In traditional partial-order reduction, actions that are not in the ample set are delayed, thus avoiding the redundant exploration of equivalent interleaving orders. Delaying the execution of actions indefinitely can lead to loss of soundness. This is called the ignoring problem. The usual solution to the ignoring problem is by Cycle Detection. Explicit state model checkers usually use Depth First Search, and when a cycle is detected, disallow using a reduced ample set that closes the cycle. The ignoring problem exists in transaction-based reduction as well. We present a novel solution to the ignoring problem in the context of transaction-based reduction. We designate certain states as commit points and track the exploration to discover whether the reduced exploration guarantees a path from each commit point to a state where the transaction is completed. If such a path does not exist, we detect this at the time a commit point is popped from the stack, and schedule all threads at the commit point. This paper presents our algorithm, called Commit Point Completion (CPC). We have implemented both CPC and Cycle Detection in the Zing model checker, and find that the CPC algorithm performs better.