Computing in Distributed Systems in the Presence of Benign Failures