fds closed after SIGCHLD bug still in newest version (fwd)

Pekka Savola pekkas at netcore.fi
Thu Nov 23 11:55:40 EST 2000


On Wed, 22 Nov 2000, Markus Friedl wrote:
> can someone confirm this? it does not happen on openbsd.

Confirmed.  This happens only when using SSH2.  FreeBSD OpenSSH 2.2.0 ->
RHL 6.2 OpenSSH 2.3.0p2 (SNAP) fail as well as RHL 7.0 OpenSSH 2.3.0p1 ->
RHL 6.2 OpenSSH 2.3.0p2 (SNAP).

Some output from RHL <-> RHL:
---  working ssh1 session ---
debug1: PAM establishing creds
debug1: Entering interactive session.
debug1: fd 7 setting O_NONBLOCK
debug1: fd 7 IS O_NONBLOCK
debug1: fd 9 setting O_NONBLOCK
debug1: server_init_dispatch_13
debug1: server_init_dispatch_15
debug1: Received SIGCHLD.
debug1: tvp!=NULL kid 1 mili 100
[snip a lot of these]
debug1: End of interactive session; stdin 0, stdout (read 194560, sent
194560), stderr 243 bytes.
debug1: Command exited with status 0.
debug1: Received exit confirmation.
---

--- non-working ssh2, client side ---
debug: client_input_channel_req: rtype exit-status reply 0
debug: channel 0: rcvd eof
debug: channel 0: output open -> drain
debug: channel 0: rcvd close
debug: channel 0: input open -> closed
debug: channel 0: close_read
debug: channel 0: obuf empty
debug: channel 0: output drain -> closed
debug: channel 0: close_write
debug: channel 0: send close
debug: channel 0: full closed2
debug: channel_free: channel 0: status: The following connections are
open:
  #0 client-session (t4 r0 i8/0 o128/0 fd -1/-1)

debug: !channel_still_open.
debug: Transferred: stdin 0, stdout 0, stderr 0 bytes in 3.2 seconds
debug: Bytes per second: stdin 0.0, stdout 0.0, stderr 0.0
debug: Exit status 0
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now
---

--- non-working server side w/ maximal debugging ---
ebug1: PAM establishing creds
debug1: fd 7 setting O_NONBLOCK
debug1: fd 7 IS O_NONBLOCK
debug1: fd 9 setting O_NONBLOCK
debug2: callback done
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug2: channel 0: read 199 from efd 9
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug2: channel 0: read 5 from efd 9
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug2: channel 0: read 38 from efd 9
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug2: channel 0: read 1 from efd 9
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug2: channel 0: rcvd adjust 24819
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug2: channel 0: rcvd adjust 30720
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug1: Received SIGCHLD.
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug3: channel 0: chan_delete_if_full_closed2: istate 1 ostate 16
debug1: tvp!=NULL kid 1 mili 100
debug1: session_by_pid: pid 28167
debug1: session_exit_message: session 0 channel 0 pid 28167
debug1: session_exit_message: release channel 0
debug1: channel 0: write failed
debug1: channel 0: output open -> closed
debug1: channel 0: close_write
debug1: channel 0: read failed
debug1: channel 0: input open -> drain
debug1: channel 0: close_read
debug1: session_free: session 0 pid 28167
debug3: channel 0: chan_delete_if_full_closed2: istate 2 ostate 128
debug3: channel 0: chan_delete_if_full_closed2: istate 2 ostate 128
debug3: channel 0: chan_delete_if_full_closed2: istate 2 ostate 128
debug3: channel 0: chan_delete_if_full_closed2: istate 2 ostate 128
debug3: channel 0: chan_delete_if_full_closed2: istate 2 ostate 128
debug2: channel 0: rcvd adjust 32768
debug3: channel 0: chan_delete_if_full_closed2: istate 2 ostate 128
debug2: channel 0: read 0 from efd 9
debug1: channel 0: closing efd 9
debug3: channel 0: chan_delete_if_full_closed2: istate 2 ostate 128
debug1: channel 0: ibuf empty
debug1: channel 0: input drain -> closed
debug1: channel 0: send eof
debug3: channel 0: chan_delete_if_full_closed2: istate 8 ostate 128
debug1: channel 0: send close
debug3: channel 0: chan_delete_if_full_closed2: istate 8 ostate 128
debug3: channel 0: chan_delete_if_full_closed2: istate 8 ostate 128
debug3: channel 0: chan_delete_if_full_closed2: istate 8 ostate 128
debug1: channel 0: rcvd close
debug3: channel 0: chan_delete_if_full_closed2: istate 8 ostate 128
debug1: channel 0: full closed2
debug1: channel_free: channel 0: status: The following connections are
open:
  #0 server-session (t4 r0 i8/0 o128/0 fd 7/7)

Connection closed by remote host.
---

HTH,
-- 
Pekka Savola                 "Tell me of difficulties surmounted,
Pekka.Savola at netcore.fi      not those you stumble over and fall"






More information about the openssh-unix-dev mailing list