a data processing system is disclosed in which each software process monitors every other software process for failures . the detection of a failure can then be used to initiate any desired failure recovery strategy . software failure detection takes place by having each software process assigned an imaginary resource by a resource locking mechanism . all other software processes request an assignment to the same imaginary resource . whenever a software process fails , the assigned imaginary resource is released by the failed process and hence is available for assignment to the other software process . this availability of another process &# 39 ; resource is interpreted as a failure of that process , and initiates failure recovery . no actual resources are used , and a standard resource allocation mechanism , such as is used to assign shared read and exclusive write access to a file , is used to perform the locking functions .