Abstract
Distributed applications are very hard to write and verify. Even with extensive testing and debugging, errors may persist. A distributed application can be viewed as a collection of processes that execute a number of atomic actions. The notion of atomicity can be employed to significantly reduce the state space to be considered in verification. Moreover, atomicity violations in a run typically indicate the presence of program bugs. In this paper, we exploit the notion of atomicity of a code block to simplify the debugging and verification of distributed applications. The notion of an atomic action has been formally defined and an algorithm to detect atomicity violations has been developed.