This is an edge-chasing, probe-based algorithm.
It is also considered one of the best deadlock detection algorithms for distributed systems.
If a process makes a request for a resource that fails or times out,
the process generates a probe message and sends it to each of the processes holding one or more of its requested resources.
Each probe message contains the following information:
the id of the process that is blocked (the one that initiates the probe message);
the id of the process, sending this particular version of the probe message; and
the id of the process that should receive this probe message.
When a process receives a probe message, it checks to see if it is also waiting for resources.