Universal causality graphs: a precise happens-before model for detecting bugs in concurrent programs

  • Authors:
  • Vineet Kahlon;Chao Wang

  • Affiliations:
  • NEC Laboratories America, Princeton, NJ;NEC Laboratories America, Princeton, NJ

  • Venue:
  • CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
  • Year:
  • 2010

Quantified Score

Hi-index 0.00

Visualization

Abstract

Triggering errors in concurrent programs is a notoriously difficult task A key reason for this is the behavioral complexity resulting from the large number of interleavings of operations of different threads Efficient static techniques, therefore, play a critical role in restricting the set of interleavings that need be explored in greater depth The goal here is to exploit scheduling constraints imposed by synchronization primitives to determine whether the property at hand can be violated and report schedules that may lead to such a violation Towards that end, we propose the new notion of a Universal Causality Graph (UCG) that given a correctness property P, encodes the set of all (statically) feasible interleavings that may violate P UCGs provide a unified happens-before model by capturing causality constraints imposed by the property at hand as well as scheduling constraints imposed by synchronization primitives as causality constraints Embedding all these constraints into one common framework allows us to exploit the synergy between the constraints imposed by different synchronization primitives, as well as between the constraints imposed by the property and the primitives This often leads to the removal of significantly more redundant interleavings than would otherwise be possible Importantly, it also guarantees both soundness and completeness of our technique for identifying statically feasible interleavings As an application, we demonstrate the use of UCGs in enhancing the precision and scalability of predictive analysis in the context of runtime verification of concurrent programs.