This appears to be a case of having more than one source enabled for the same fd, even if they're for different conditions (EPOLLIN vs. EPOLLOUT). I'm looking now at changing the code to use only one source but in a disabled, EPOLLIN only, EPOLLIN only, or EPOLLIN | EPOLLOUT state.