From POSIX: "If the timeout interval expires without the specified condition being true for any of the specified file descriptors, the objects pointed to by the readfds, writefds, and errorfds arguments shall have all bits set to 0." If your select() timeouts on first loop iteration for any reason, then it will timeout forever as you give it back all-zeroes descriptor set to monitor.
You have better eyes than I do ;)