### Citations

2867 | clocks, and the ordering of events in a distributed system
- Lamport
- 1978
(Show Context)
Citation Context ...i-threaded Java programs. 1 Introduction Concurrent systems are notoriously difficult to analyze, test and debug due to their inherent nondeterminism. The happen-before causality, first introduced in =-=[15]-=-, provides an effective way to analyze the potential dynamic behaviors of concurrent systems and has been widely used in concurrent program verification and testing [24, 17, 20, 21, 8]. Intuitively, h... |

1208 | Distributed snapshots: Determining global states of distributed systems.
- Chandy, Lamport
- 1985
(Show Context)
Citation Context ...exclusively via message passing, and another in the context of multi-threaded systems, where communication takes place via shared memory. In the next section we’ll show that their correctness results =-=[2, 21]-=- follow as corollaries of our main theorem. In Section 4 we define another happen-before causality, called sliced causality, which uses static analysis information about the multi-threaded program in ... |

995 | The program dependence graph and its use in optimization
- Ferrante, Ottenstein, et al.
- 1987
(Show Context)
Citation Context ...) and e <τ e′. The control dependence among events in sliced causality is parametric in a control dependence relation among statements. In particular, one can use off-the-shelf algorithms for classic =-=[7]-=- or for weak [18] control dependence. All we need is a function returning the control scope of any statement C, say scope (C): the set of statements whose reachability depends upon the choice made at ... |

790 | A Survey of Program Slicing Techniques
- Tip
- 1995
(Show Context)
Citation Context ...events to be analyzed and resulting in better coverage of the analysis. We employ dependencies among events to assure correct slicing. The dependence discussed here somehow relates to program slicing =-=[10, 25]-=-, but we focus on finer grained dynamic units, namely events, instead of statements. Our analysis keeps track of actual memory locations in every event, available at runtime, which avoids interprocedu... |

197 | Dynamic partialorder reduction for model checking software
- Flanagan, Godefroid
- 2005
(Show Context)
Citation Context ...causality, first introduced in [15], provides an effective way to analyze the potential dynamic behaviors of concurrent systems and has been widely used in concurrent program verification and testing =-=[24, 17, 20, 21, 8]-=-. Intuitively, happen-before based approaches extract happen-before causal partial orders by analyzing thread communication in the observed execution; the extracted causal partial order can be regarde... |

165 | Consistent detection of global predicates.
- Cooper, Marzullo
- 1991
(Show Context)
Citation Context ...ndeed violate or satisfy the property, regardless of whether the particular observed execution that generated the happen-before relation violated or satisfied the property, respectively. For example, =-=[5]-=- defines for each trace property ϕ, complex formulae Definitely(ϕ) and Possibly(ϕ), which hold in all and, respectively, in at least one possible linearization of the happenbefore causality. In order ... |

165 | Hybrid Dynamic Data Race Detection
- O’Callahan, Choi
- 2003
(Show Context)
Citation Context ...causality, first introduced in [15], provides an effective way to analyze the potential dynamic behaviors of concurrent systems and has been widely used in concurrent program verification and testing =-=[24, 17, 20, 21, 8]-=-. Intuitively, happen-before based approaches extract happen-before causal partial orders by analyzing thread communication in the observed execution; the extracted causal partial order can be regarde... |

151 | A formal model of program dependences and its implications for software testing, debugging, and maintenance‖,
- Podgurski, Clarke
- 1990
(Show Context)
Citation Context ...he control dependence among events in sliced causality is parametric in a control dependence relation among statements. In particular, one can use off-the-shelf algorithms for classic [7] or for weak =-=[18]-=- control dependence. All we need is a function returning the control scope of any statement C, say scope (C): the set of statements whose reachability depends upon the choice made at C, that is, the s... |

147 |
Object race detection
- Praun, Gross
- 2001
(Show Context)
Citation Context ...tions. Banking and Http-Server are two simple examples taken over from [27], showing relatively classical concurrent bug patterns that are discussed in detail in [6]. Elevator, sor, and tsp come from =-=[28]-=-. Elevator simulates the controls of multiple elevators. sor is a scientific computation program that uses barriers instead of locks for synchronization. tsp solves the traveling salesman problem (we ... |

119 | The use of program dependence graphs in software engineering.
- Horwitz, Reps
- 1992
(Show Context)
Citation Context ...events to be analyzed and resulting in better coverage of the analysis. We employ dependencies among events to assure correct slicing. The dependence discussed here somehow relates to program slicing =-=[10, 25]-=-, but we focus on finer grained dynamic units, namely events, instead of statements. Our analysis keeps track of actual memory locations in every event, available at runtime, which avoids interprocedu... |

84 | Improving the accuracy of data race detection”,
- Netzer, Miller
- 1991
(Show Context)
Citation Context ... e2 is the corresponding receive message; e1 → e2 and e1 → e3, but e2 and e3 are not related. It is easy to prove that (E,→) is a partial order. The soundness of this happen-before relation, i.e., all the permutations of τ consistent with → are possible computations of the distributed system, was proved in [2] using a specific formalization of the global state of a distributed system. This property will follow as an immediate corollary of our main theorem in the next section. Happen-before causalities have been devised in the context of multithreaded systems for various purposes. For example, [15, 16] propose datarace detection techniques based on intuitive multi-threaded variants of happen-before causality, [19] proposes a happen-before relation that drops read/read dependencies, and [20] even drops the write/write conflicts but relates each write with all its subsequent reads atomically. Finding appropriate happen-before causalities for multithreaded systems is a nontrivial task. The obvious approach would be to map the inter-thread communication in a multi-threaded system into send/receive events in some corresponding distributed system. For example, starting a new thread generates two ... |

79 | Concurrent bug patterns and how to test them.
- Farchi, Nir, et al.
- 2003
(Show Context)
Citation Context ...thread uses the authenticated resource. They communicate via the flag variable. Synchronization is unnecessary, since only the main thread modifies flag. However, the developer makes a (rather common =-=[6]-=-) mistake by using if instead of while in the task thread. Suppose now that we observed a successful run of the program, as shown by the arrow. The traditional happen-before will not be able to find t... |

78 | Static slicing of threaded programs.
- Krinke
- 1998
(Show Context)
Citation Context ... the common data dependence. For example, for an assignment x := E, the write of x data depends on all the reads generated by the evaluation of E. The second case captures the interference dependence =-=[14]-=- in multi-threaded programs: a read depends on the most recent write of the same memory location. For instance, in Figure 5, if the observed execution is C1S 1S 3 then the read of x at S 3 is data dep... |

64 |
Counting linear extensions is #p-complete.
- Brightwell, Winkler
- 1991
(Show Context)
Citation Context ...nd then to compare their numbers. Unfortunately, counting sound permutations, also called linear extensions or even topological sortings in the literature, is a very difficult problem; it is shown in =-=[1]-=- that it is a #P-complete problem, indicating that the counting question may be no easier than the generation question. Note that a fully constrained partial order, that is, a total order, admits only... |

57 | An efficient relevant slicing method for debugging,”
- Gyimothy, Beszedes, et al.
- 1999
(Show Context)
Citation Context ... the most recent write of x at S 1. We treat lock release as a write on the lock and lock acquire as a read. The third case is more intricate and related to what is called 11 “relevant dependence” in =-=[9]-=-. Assuming execution C 1S 2S 3 in Figure 5, no type 1 or 2 data dependence can be found. However, a change of the value of the read of i at C1 can potentially change the value of the read of x at S 3:... |

52 |
Generation of Permutations by Adjacent Transposition
- Trotter, Johnson
- 1963
(Show Context)
Citation Context ... hypothesis and conclude that τ ′ ∈ F . This theorem generalizes the classic theorem about permutations and transpositions, which states that any permutation is a product of adjacent transpositions =-=[12]-=-, by extending the result to linearizations of partial orders. Assuming that F is the set of traces generated by feasible executions, this theorem states that every sound permutation of the extracted ... |

45 | Runtime safety analysis of multithreaded programs.
- Sen, Rosu, et al.
- 2003
(Show Context)
Citation Context ...causality, first introduced in [15], provides an effective way to analyze the potential dynamic behaviors of concurrent systems and has been widely used in concurrent program verification and testing =-=[24, 17, 20, 21, 8]-=-. Intuitively, happen-before based approaches extract happen-before causal partial orders by analyzing thread communication in the observed execution; the extracted causal partial order can be regarde... |

30 | Online efficient predictive safety analysis of multithreaded programs.
- Sen, Rosu, et al.
- 2006
(Show Context)
Citation Context ...ms, which is publicly available for download [13]. To measure the effectiveness of sliced causality in contrast with more conventional happens-before causalities, we also implemented the procedure in =-=[23]-=- for extracting a happens-before partial order from executions of multi-threaded systems. Interested 15 readers are referred to [3] for more details about the algoritm and implementation of jPredictor... |

23 | Detecting errors in multithreaded programs by generalized predictive analysis of executions.
- Sen, Rosu, et al.
- 2005
(Show Context)
Citation Context ... total on the events generated by each thread and in which each write event of a shared variable precedes all the corresponding subsequent read events. This is investigated and discussed in detail in =-=[22]-=-. In what follows we show that one can construct a much less restrictive causal partial order, called sliced causality, by making use of dependence information obtained statically and dynamically. Bri... |

19 | Efficient detection of global properties in distributed systems using partial-order methods.
- Stoller, Unnikrishnan, et al.
- 2000
(Show Context)
Citation Context |

17 | Detecting temporal logic predicates in distributed programs using computation slicing.
- Sen, Garg
- 2003
(Show Context)
Citation Context |

7 | Predicting concurrency errors at runtime using sliced causality.
- Chen, Rosu
- 2005
(Show Context)
Citation Context ...the entire dependence relation, since we only need to compute the causal partial order among events that are relevant to the property to check. This leads to an effective vector clock (VC) algorithm (=-=[3]-=-). Intuitively, event e′ depends upon event e in τ, written e e ′, iff a change of e may change or eliminate e′. This tells the observer that e should occur before e ′ in any consistent permutation ... |

5 | Parametric and termination-sensitive control dependence - extended abstract.
- Chen, Rosu
- 2006
(Show Context)
Citation Context ...etter solution, still over-conservative, is to use weak dependence [18] when calculating the control scopes. If termination information of loops is available, termination-sensitive control dependence =-=[4]-=- can be utilized to provide correct and more precise results; this is the control dependence that we are currently using in jPredictor. One can also try to use the classic control dependence [7] inste... |

4 |
Dependence graphs.
- Hoogeboom, Rozenberg
- 1995
(Show Context)
Citation Context ...enote the set of all such traces. Given a set X, let PO(X) denote the set of partial orders defined on subsets of X, that is, the set of pairs (ξ, <) where ξ ⊆ X and <⊆ ξ × ξ is a partial order. Definition 3. A causality operator is a partial function C : Traces→◦ PO(Events) s.t.: 1. If C(τ) = (ξ, <), then ξ = ξτ and <⊆<τ; and 2. For any τ = τ1e1e2τ2 such that C(τ) = (ξ, <) with e1 ≮ e2, C(τ1e2e1τ2) is also defined and equal to C(τ). Let Dom(C) denote the domain of C. Note that condition (ii) in the definition above is closely related to that of trace equivalence introduced by Mazurkiewicz in [11]. However, the theory of Mazurkiewicz traces starts with a given dependency relation on events and considers equivalence of traces according to that fixed dependency, while in our framework, we prefer to associate a separate dependency relation to each trace, assuming that only at runtime we can get enough information about the causality for a given trace; for example, acquiring lock l and writing shared variable x can be or not dependent events, depending on the particular execution of the program. This allows us to be more precise while still using part of the generic Mazurkiewicz trace theo... |

2 |
Website with examples of multi-threaded programs. http://qp.research.ibm.com/QuickPlace/concurrency testing/Main.nsf
- Ur
(Show Context)
Citation Context ...their size (LOC abbreviates “lines of code”), number of shared variables (S.V.), and number of threads created during their executions. Banking and Http-Server are two simple examples taken over from =-=[27]-=-, showing relatively classical concurrent bug patterns that are discussed in detail in [6]. Elevator, sor, and tsp come from [28]. Elevator simulates the controls of multiple elevators. sor is a scien... |