ignoring SIGPIPE causing problems in pipes

Ed L Cashin ecashin at terry.uga.edu
Mon May 21 13:17:48 EST 2001


Hi.  I'm writing an article on network backups, and instead of using
my old ssh1 software, I decided to go with openssh all the way.  I got
the hang of the openssh way of doing protocol 2 public key
authentication, but ssh is failing to terminate when a pipe is broken.

I am ssh-ing to a remote host and doing a cat or zcat of a dump file,
then on the localhost, I'm using restore to extract files from the
dump stream.  With openssh-2.9p1, I can tell with strace on the
localhost that the restore process exits after restoring the file
successfully.  I can see in the process list that the ssh command is
still running, though, so the restore appears to "hang".

I suspected that the ssh client was inappropriately ignoring the PIPE
signal, so I tried restoring from a cat of a local stream, and
observed that cat exited with a "Broken pipe" error.  I made the
following change, commenting out the line that ignores the SIGPIPE:

nilda:2:ecashin openssh-2.9p1$ diff -u clientloop.c.dist  clientloop.c
--- clientloop.c.dist   Fri Apr 20 08:50:51 2001
+++ clientloop.c        Sun May 20 22:55:35 2001
@@ -814,7 +814,7 @@
        signal(SIGINT, signal_handler);
        signal(SIGQUIT, signal_handler);
        signal(SIGTERM, signal_handler);
-       signal(SIGPIPE, SIG_IGN);
+       /* signal(SIGPIPE, SIG_IGN); */
        if (have_pty)
                signal(SIGWINCH, window_change_handler);
 
... and got the correct behavior:

 [root at nilda test-restore]# ssh meili 'cat nildadump-boot.gz' | \
  gunzip -c | restore xf - kernel.h
 root at meili's password: 
 set owner/mode for '.'? [yn] n
 Broken pipe

I noticed in the ChangeLog file that SIGPIPE and X forwarding problems
are related somehow ... 

Is there any chance of this getting resolved before September?  I
don't want to publish an article with scripts that will appear to
hang mysteriously.  TIA!  :)

-- 
--Ed Cashin                   PGP public key:
  ecashin at terry.uga.edu       http://www.terry.uga.edu/~ecashin/pgp/




More information about the openssh-unix-dev mailing list