Currently existing message logging protocols demonstrate a classic pessimistic vs. optimistic tradeoff. We show that the optimistic–pessimistic tradeoff is not inherent to the problem of message logging. We construct a message–logging protocol that has the positive features of both optimistic and pessimistic protocol: our protocol prevents orphans and allowssimple failure recovery; however, it requires no blocking in failure–free runs. Furthermore, this protocol does not introduce any additional message overhead as compared to one implemented for a system in which messages may be lost but processes do not crash.