OK, I patched Torndado 3.2 with additional diagnostics in iostream.py as you suggested and did get a couple of incidents simultaneously on 2 of our servers. The connections are coming from something that is scanning servers/ports, not our client.
The logging I added shows that the socket is getting READ events, but socket.do_handshake() triggers socket error 57 (EBADF - bad file descriptor):
2014/07/07 13:17:35 Got events [1] for socket 12 looping excessively in ssl handshake
2014/07/07 13:17:35 ssl handshake count 12 for socket 12 from (not connected)
2014/07/07 13:17:35 socket.error: 57 on (not connected)
Because EBADF is not included in _ERRNO_CONNRESET, tornado does not give up and close the socket.
Here is a tcpdump from one of the incidents, which I think shows that the server is resetting the connection.
13:25:15.164062 IP 212.83.148.113.51730 > 64.95.76.27.443: Flags [S], seq 4127360044, win 32, options [mss 1460,nop,wscale 0,nop,nop,sackOK], length 0
13:25:15.164208 IP 64.95.76.27.443 > 212.83.148.113.51730: Flags [S.], seq 1489116201, ack 4127360045, win 65535, options [mss 1460,nop,wscale 3,sackOK,eol], length 0
13:25:15.270470 IP 212.83.148.113.51730 > 64.95.76.27.443: Flags [.], ack 1, win 32, length 0
13:25:15.270475 IP 212.83.148.113.51730 > 64.95.76.27.443: Flags [R.], seq 1, ack 1, win 0, length 0
13:25:15.273408 IP 212.83.148.113.61581 > 64.95.76.27.8443: Flags [S], seq 288987127, win 32, options [mss 1460,nop,wscale 0,nop,nop,sackOK], length 0
13:25:15.273414 IP 64.95.76.27.8443 > 212.83.148.113.61581: Flags [S.], seq 4057220914, ack 288987128, win 65535, options [mss 1460,nop,wscale 3,sackOK,eol], length 0
13:25:15.379878 IP 212.83.148.113.61581 > 64.95.76.27.8443: Flags [.], ack 1, win 32, length 0
13:25:15.380314 IP 212.83.148.113.61581 > 64.95.76.27.8443: Flags [R.], seq 1, ack 1, win 0, length 0
Could Tornado have closed the socket but kept a bad file descriptor?