Subject: Re: Problem with NetBSD 1.4_alpha with signals and persistent processes
To: Gandhi woulda smacked you <greywolf@starwolf.com>
From: Brian Buhrow <buhrow@cats.ucsc.edu>
List: current-users
Date: 04/22/1999 11:21:59
	Hello NetBSD folks. Looking at the problem I'm having with window
further, I see that the problem is more complex than I first thought. Since
I'm now copying tech-kern, I'll explain  what my problem is.
	I am an avid user of the window program which gets shipped with NetBSD
and which I have used since its days on 4.3BSD and vaxen.  Since NetBSD
0.8, this program  has performed flawlessly for me in a variety of
settings.  I often log in through a serial port and use it there.  I also
often log in through a telnet connection and run it there.  In all cases,
when I quit the window program, any shells, programs, etc which were
running in the windows (children of the window process itself) are sent a
SIGHUP signal and they all exit gracefully.
	Now, with NetBSD 1.4_ALPHA with kernel sources of April 15, 1999, if I
log in through a serial port and run the window program, all runs fine
until I exit the window program.  At that point, the problem manifests
itself in the form of not properly signaling the children of the window
program with the SIGHUP signal.  In the previous messages, I proposed that
the problem is in the kern_sig.c file, but since all works fine over a
telnet connection to the 1.4_ALPHA machine, my guess is that it is in the
com.c file or somewhere between the com and tty layers.  My friend and I
are conducting more tests to see if the problem manifests itself on
1.3.3/i386 systems, but since the com driver has changed significantly
between 1.3.3 and now, my guess is that it works fine there.
	Might anyone be able to shed some light on how signal masks are
treated differently on physical ttys as opposed to virtual pseudo ttys?
Has anyone else experienced problems like this with serial ports?
-thanks
-Brian
P.S.  My com version is:
/*	$NetBSD: com.c,v 1.159 1999/03/31 12:44:04 mrg Exp $	*/