Deadlock detection of active objects with synchronous and asynchronous method calls
Abstract
Open distributed systems are essential in today’s software
solutions. However, not all programming paradigms provide
natural support for such systems. The setting of concurrent
objects is attractive since it supports independent units of
computation. In particular we consider concurrent objects
communicating by asynchronous method calls supporting non-
blocking as well as blocking method calls. In this setting
waiting time can be reduced, allowing efficient cooperation
between objects. With this concurrency model, deadlock is
avoided if blocking calls are avoided. However, blocking calls
are sometimes needed to control the order of computation. The
non-hierarchical nature of concurrent objects systems gives rise
to non-trivial deadlock situations. Deadlocks may occur if there
is a call chain with at least one blocking call.We propose a
method for static detection of deadlocks, and demonstrate its
use on a non-trivial example.