This paper presents a reliable decentralized mutual exclusion algorithm for distributed systems in which processes communicate by a synchronous message passing. When any failure happens in system, the algorithm protects the distributed system against any crash. It also makes possible the recovery of lost data in system. It requires between (N-1) and 2(N-1) messages per critical section access, where N is the number of processes in the system. The exact message complexity can be expressed as a order function of clients in computation. The algorithm does not introduce any other overhead over Lamport's and Ricart-Agrawala's algorithms, which require 3(N-1) and 2(N-1) messages per critical section access, respectively.