openssh 2.2, fbsd 4.2: incoming data hangs sshd on tty

mike at hyperreal.org mike at hyperreal.org
Tue Dec 26 13:30:20 EST 2000


I wrote:
> sshd, specifically the forked sshd process that is attached to a terminal
> when a connection is made, tends to freeze when receiving data over the link.
> The only way out is to kill -9 this process. It is easily reproducible by
> pasting text into an editor.

With the help of someone who advised me to run ktrace on the sshd process
that freezes, I have narrowed down the circumstances under which the problem
is reproducible, and I discovered that sshd does receive a little bit more
data from the paste than I get to see coming back from the editor.

It seems to have to do with whatever the pico (yes, pico, old habits die
hard) editor is doing when it is receiving keystrokes and writing out to the
screen. General screen repaints (ctrl-L) are fine; as are individual
keystrokes. But pasting into the editor causes the ssh freeze-up. As I
mentioned, there is no way to get out of it; killing the editor or the shell
don't work; the processes stick around waiting for sshd to let them go or
something. I have to kill the sshd process.

Contrary to earlier test results, I am unable to reproduce the problem
outside of pico. Pasting the same text into an echo "..." command in the
shell multiple times yielded no problems.

Tail end of the kdump follows. Note that it does not RET from the write() at
the end:

   407 sshd     CALL  select(0x6,0xbfbff39c,0xbfbff31c,0,0)
   407 sshd     RET   select 1
   407 sshd     CALL  read(0x4,0xbfbfb2dc,0x4000)
   407 sshd     GIO   fd 4 read 156 bytes
       "\0\0\0>µ\M^XÏ¥AÐ8\M^Wl\M^_<s¢0ä\^BËH\M^A0Ñ\^W"AU\^\\M^]Á\fP-ÁCfc´\240ò\
        ©\M^Am<\^P\M^YËo¦øoB\M^UÜ\^NþEd\^Wî\^OàF0Øp\0\0\0
        |ª¿xû\M^]Þß¾ÊE¡Ö<-]\0\0\0>èàȸâ\aM­?ï4Ü1ø>Á\M^M®4\^Cóª\M^@wõ\M^I¼Q\^\ó\
        Ìo\M^H\M^YYÉAÕ{=l,eèÖÃ\fb{´|\M^F\^T§»°u\M^_\M^SÜÇ?¶V"
   407 sshd     RET   read 156/0x9c
   407 sshd     CALL  select(0x6,0xbfbff39c,0xbfbff31c,0,0)
   407 sshd     RET   select 1
   407 sshd     CALL  read(0x5,0xbfbfb2dc,0x4000)
   407 sshd     GIO   fd 5 read 8 bytes
       "\^[[19;64H"
   407 sshd     RET   read 8
   407 sshd     CALL  select(0x6,0xbfbff39c,0xbfbff31c,0,0xbfbff2d4)
   407 sshd     RET   select 1
   407 sshd     CALL  write(0x3,0x8082000,0x6ea)

Don't know if this is helpful or not.





More information about the openssh-unix-dev mailing list