Fault-tolerant Agreement in Synchronous Message-passing Systems