Theoretical Computer Science
Recovery in distributed systems using asynchronous message logging and checkpointing
PODC '88 Proceedings of the seventh annual ACM Symposium on Principles of distributed computing
Logical Time in Distributed Computing Systems
Computer - Distributed computing systems: separate resources acting as one
Consistent detection of global predicates
PADD '91 Proceedings of the 1991 ACM/ONR workshop on Parallel and distributed debugging
Experimental results from dynamic slicing of C programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Necessary and Sufficient Conditions for Consistent Global Snapshots
IEEE Transactions on Parallel and Distributed Systems
Distributed snapshots: determining global states of distributed systems
ACM Transactions on Computer Systems (TOCS)
Journal of Systems and Software - Special issue on software engineering for distributed computing
Consistent Global Checkpoints that Contain a Given Set of Local Checkpoints
IEEE Transactions on Computers
A framework for viewing atomic events in distributed computations
Theoretical Computer Science - Special issue on parallel computing
Efficient Distributed Detection of Conjunctions of Local Predicates
IEEE Transactions on Software Engineering
Programmers use slices when debugging
Communications of the ACM
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
Techniques to Tackle State Explosion in Global Predicate Detection
IEEE Transactions on Software Engineering
Elements of distributed computing
Elements of distributed computing
Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem
Faster Possibility Detection by Combining Two Approaches
WDAG '95 Proceedings of the 9th International Workshop on Distributed Algorithms
Efficient Detection of Restricted Classes of Global Predicates
WDAG '95 Proceedings of the 9th International Workshop on Distributed Algorithms
Computation Slicing: Techniques and Theory
DISC '01 Proceedings of the 15th International Conference on Distributed Computing
Algorithmic Combinatorics Based on Slicing Posets
FST TCS '02 Proceedings of the 22nd Conference Kanpur on Foundations of Software Technology and Theoretical Computer Science
Slicing Concurrent Programs - A Graph-Theoretical Approach
AADEBUG '93 Proceedings of the First International Workshop on Automated and Algorithmic Debugging
Efficient Detection of Global Properties in Distributed Systems Using Partial-Order Methods
CAV '00 Proceedings of the 12th International Conference on Computer Aided Verification
Software Fault Tolerance of Distributed Programs Using Computation Slicing
ICDCS '03 Proceedings of the 23rd International Conference on Distributed Computing Systems
On Detecting Global Predicates in Distributed Computations
ICDCS '01 Proceedings of the The 21st International Conference on Distributed Computing Systems
On Slicing a Distributed Computation
ICDCS '01 Proceedings of the The 21st International Conference on Distributed Computing Systems
Predicate Control for Active Debugging of Distributed Programs
IPPS '98 Proceedings of the 12th. International Parallel Processing Symposium on International Parallel Processing Symposium
Detection of global predicates: techniques and their limitations
Distributed Computing
Solving Computation Slicing Using Predicate Detection
IEEE Transactions on Parallel and Distributed Systems
On Detecting Regular Predicates in Distributed Systems
ATVA '09 Proceedings of the 7th International Symposium on Automated Technology for Verification and Analysis
FM'06 Proceedings of the 14th international conference on Formal Methods
Hi-index | 0.00 |
Writing correct distributed programs is hard. In spite of extensive testing and debugging, software faults persist even in commercial grade software. Many distributed systems should be able to operate properly even in the presence of software faults. Monitoring the execution of a distributed system, and, on detecting a fault, initiating the appropriate corrective action is an important way to tolerate such faults. This gives rise to the predicate detection problem which requires finding whether there exists a consistent cut of a given computation that satisfies a given global predicate.Detecting a predicate in a computation is, however, an NP-complete problem in general. In order to ameliorate the associated combinatorial explosion problem, we introduce the notion of computation slice. Formally, the slice of a compuation with respect to a predicate is a (sub)computation with the least number of consistent cuts that contains all consistent cuts of the computation satisfying the predicate. Intuitively, slice is a concise representation of those consistent cuts of a computation that satisfy a certain condition. To detect a predicate, rather than searching the state-space of the computation, it is much more efficient to search the state-space of the slice.We prove that the slice of a computation is uniquely defined for all predicates. We also present efficient algorithms for computing the slice for several useful classes of predicates. For an arbitrary predicate. we establish that the problem of computing the slice is NP-complete in general. Nonetheless, for such a predicate, we develop an efficient heuristic algorithm for computing an approximate slice. Our experimental results demonstrate that slicing can lead to an exponential improvement over existing techniques for predicate detection in terms of time and space.