That's true but how often is it that you do an infinite loop withought having any code in the middle? You're going to currupt the stack sooner or later.
Take a look at all the programs in
this folder -- they're programs for my microcontroller. Notice what they all have in common? They all take place in an infinite loop. And none of them corrupt the memory.
Generally, they're a finite-state-machine, waiting for events, but there's no way to sleep on that uC, since my code is the only code running (no library, no kernel, etc).