  Although the halting problem is undecidable, imperfect testers that fail on
some instances are possible. Such instances are called hard for the tester. One
variant of imperfect testers replies "I don't know" on hard instances, another
variant fails to halt, and yet another replies incorrectly "yes" or "no". Also
the halting problem has three variants: does a given program halt on the empty
input, does a given program halt when given itself as its input, or does a
given program halt on a given input. The failure rate of a tester for some size
is the proportion of hard instances among all instances of that size. This
publication investigates the behaviour of the failure rate as the size grows
without limit. Earlier results are surveyed and new results are proven. Some of
them use C++ on Linux as the computational model. It turns out that the
behaviour is sensitive to the details of the programming language or
computational model, but in many cases it is possible to prove that the
proportion of hard instances does not vanish.
