what if you don't allow halt to call
itself like this?"
Does not help.
There are too many (uncountable)
conditions that can cause a problem.
And it is not just a feature of C or any other language.
<insert chalk talk on numbers here>