Something seems to be broken once we exceed the back_log count. Once getting drizzleslap to hang, I dumped the active sockets for each process: eday@orisndriz01:~/bzr/drizzle/eday-dev/tests$ lsof -p 32531 -i4 -a COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME drizzlesl 32531 eday 3u IPv4 10320113 TCP localhost:54858->localhost:9306 (CLOSE_WAIT) drizzlesl 32531 eday 185u IPv4 10324113 TCP localhost:56240->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 186u IPv4 10324115 TCP localhost:56241->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 187u IPv4 10324117 TCP localhost:56242->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 188u IPv4 10324119 TCP localhost:56243->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 189u IPv4 10324121 TCP localhost:56244->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 190u IPv4 10324123 TCP localhost:56245->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 191u IPv4 10324125 TCP localhost:56246->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 192u IPv4 10324127 TCP localhost:56247->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 193u IPv4 10324129 TCP localhost:56248->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 194u IPv4 10324131 TCP localhost:56249->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 195u IPv4 10324133 TCP localhost:56250->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 196u IPv4 10324135 TCP localhost:56251->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 197u IPv4 10324137 TCP localhost:56252->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 198u IPv4 10324139 TCP localhost:56253->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 199u IPv4 10324141 TCP localhost:56254->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 200u IPv4 10324143 TCP localhost:56255->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 201u IPv4 10324145 TCP localhost:56256->localhost:9306 (ESTABLISHED) drizzlesl 32531 eday 202u IPv4 10324147 TCP localhost:56257->localhost:9306 (ESTABLISHED) eday@orisndriz01:~/bzr/drizzle/eday-dev/tests$ lsof -p 20886 -i4 -a COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME drizzled 20886 eday 10u IPv4 10302592 TCP *:9306 (LISTEN) eday@orisndriz01:~/bzr/drizzle/eday-dev/tests$ netstat -n|grep 9306 tcp 0 0 127.0.0.1:56243 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56255 127.0.0.1:9306 ESTABLISHED tcp 1 0 127.0.0.1:54858 127.0.0.1:9306 CLOSE_WAIT tcp 0 0 127.0.0.1:56247 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56252 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56249 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56256 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56251 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56240 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56257 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56254 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56245 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56241 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56246 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56242 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56248 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56250 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56244 127.0.0.1:9306 ESTABLISHED tcp 0 0 127.0.0.1:56253 127.0.0.1:9306 ESTABLISHED As you can see, drizzleslap thinks it has valid connections and are all blocking in poll(), but the server has no knowledge of the active connections. The OS should be causing poll() to return POLLERR or POLLHUP inside of drizzleslap, rather than have them block indefinitely for POLLIN.