In this paper, we offer a wider perspective of the general problem of distributed runtime verification of distributed systems, in fully asynchronous fault-tolerant environments. We study this problem in an asynchronous shared memory model with crash failures where correctness properties are defined as languages, and the aim is to design wait-free algorithms that decide languages in a distributed manner. A decidability definition states the possible values processes can report in an execution, and provides semantics to the values. We propose several decidability definitions, study the relations among them, and prove possibility and impossibility results. One of our main results is a characterization of the correctness properties that can be decided asynchronously. Remarkably, it applies to any language decidability definition. Intuitively, the characterization is that only properties with no real-time order constraints can be decided in asynchronous fault-tolerant settings. As a consequence, there are correctness properties, like linearizability and strong eventual counters, that are unverifiable, no matter the number of possible values processes can report in an execution, and the semantics one gives to those values. We present, however, techniques to evade this strong impossibility result, that combine an indirect runtime verification approach and relaxed decidability definitions. All possibility results use only read/write registers, hence can be simulated in asynchronous messages-passing systems where less than half of the processes can crash, and the impossibility results hold even if processes use powerful operations with arbitrary large consensus number. The results presented here also serve to put previous work in a more general context.
翻译:暂无翻译