In V8.1, when read() returns -1 and if errno is not one of these values (EINTR , EAGAIN , EWOULDBLOCK) then we call cleanup_exit() https://github.com/openssh/openssh-portable/blob/fbe37c90602fa2d0d7b5f05868d6886b1e216e65/serverloop.c#L332 In V8.5, when read() retuns -1 and if errno is equal to EWOULDBLOCK then only we call cleanup_exit() https://github.com/openssh/openssh-portable/blob/0727dd09eca355e7539cbcb23b148fcee9b21513/serverloop.c#L335 It looks like a typo, line 336 (in V8.5) should be, errno == EWOULDBLOCK
Please note in this case the sshd processes (one SYSTEM sshd process and another user sshd process) hangs indefinetly.
Fixed in 2dc328023f
closing resolved bugs as of 8.6p1 release