A fault tolerant election-based deadlock detection algorithm in distributed systems