Noah wrote: > Ah, it turns out I was generating that exception, but I couldn't see it > because it was jumping to an 'ensure' block, and I guess the thread would > just die. I moved the s.close into the ensure block and now it's working > great. In case you haven't come across it yet: Thread.abort_on_exception = true will abort the whole process, instead of just killing the thread quietly. Good for debugging...