We study the feasibility and cost of implementing --a fundamental failure detector at the core of many algorithms--in systems with weak reliability and synchrony assumptions. Intuitively, allows processes to eventually elect a common leader. We first give an algorithm that implements in a weak system S where (a) except for some unknown timely process s, all processes may be arbitrarily slow or may crash, and (b) only the output links of s are eventually timely (all other links can be arbitrarily slow and lossy). Previously known algorithms for worked only in systems that are strictly stronger than S in terms of reliability or synchrony assumptions.We next show that algorithms that implement in system S are necessarily expensive in terms of communication complexity: all correct processes (except possibly one) must send messages forever; moreover, a quadThis paper was originally invited to the special issue of Distributed Computing based on selected papers presented at the 22nd ACM S...