zsh gets mighty confused when you type quickly, and the select() system call happens to trash the timeout value (as the manpage says, "consider timeout to be undefined after select returns"). this happens rarely, but I've seen it happen on a redhat box (5.1, with a recompiled 2.0.35 kernel). fix: add "tv.tv_sec = 0;" in Src/zle_main.c, line 479 (around FD_SET(SHTTY, &foofd); if ((tv.tv_usec = cost * costmult) > 500000) ... as far as I can see, the bug is still there in the rh6.0 srpm for zsh.
Fixed in zsh-3.0.5-11.src.rpm. Thanks for the patch.