Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Aug 1997 04:36:53 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        bugs@freebsd.org
Subject:   rlogin misses child death
Message-ID:  <199708271836.EAA03347@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
Why does rlogin ignore SIGCHLD when it is stopped?  Doing so causes it
to miss the death of the child.  To see the problem, rlogin somewhere,
suspend rlogin, then kill the remote shell.  Then de-suspend rlogin.
Sometimes (more often than not here) the child starts up first.  Then
the parent doesn't exit until it attempts to write something and gets
a SIGPIPE.

telnet notices that the connection has gone away when it is de-suspended
after being suspended using ^]z, but not when it has been suspended using
^]^Z.

Bruce

diff -c2 rlogin.c~ rlogin.c
*** rlogin.c~	Wed Aug  6 09:51:11 1997
--- rlogin.c	Thu Aug 28 04:15:37 1997
***************
*** 585,591 ****
  {
  	mode(0);
- 	(void)signal(SIGCHLD, SIG_IGN);
  	(void)kill(cmdc == defltc.t_suspc ? 0 : getpid(), SIGTSTP);
- 	(void)signal(SIGCHLD, catch_child);
  	mode(1);
  	sigwinch(0);			/* check for size changes */
--- 585,589 ----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199708271836.EAA03347>