[comp.os.minix] SIGINT problems...

dtynan@sultra.UUCP (Der Tynan) (10/12/88)

Once more unto the breech...
I recently posted a message about a problem with SIGINT, and background
tasks.  Someone e-mail'ed back, saying this was fixed in 1.3b.  Well, I
am now running 1.3b and the bug is still there.  A quick summary of the
bug; from the shell, if you put 'make' into the background (make &), and
then run some other command (such as 'ls'), then type your SIGINT character
(DEL in most cases), not only will the 'ls' stop, but so too will the make
process.  I am pretty sure that this is not an 'sh' problem.  I am halfway
convinced that it's not a 'make' problem.  This leaves the tty.c driver.
I am on unstable ground here, as I'm not sure if this is some 'official'
quirk of process groups -- I know this isn't the case with SysV!!  Anyway,
surely someone else has run into this problem?  Most of my compiles are
done in the background, and it's hard to remember NOT to press DEL, when
leafing through a big file.  I'm sure there is a simple fix for this; has
anyone done anything on these lines?  Or, am I alone on this one...
						- Der
-- 
Reply:	dtynan@sultra.UUCP		(Der Tynan @ Tynan Computers)
	{mips,pyramid}!sultra!dtynan
	Cast a cold eye on life, on death.  Horseman, pass by...    [WBY]

rtregn@immd3.informatik.uni-erlangen.de (Robert Regn) (10/24/88)

In <2573@sultra.UUCP> Der Tynan writes
 ...   from the shell, if you put 'make' into the background (make &), and
then run some other command (such as 'ls'), then type your SIGINT character
(DEL in most cases), not only will the 'ls' stop, but so too will the make
process.


The reason for this is the line in cc.c :
        signal (SIGINT, trapcc);
It reconnects an ignored signal. Then in the childs of cc the action to the
SIGINT is resetted by the kernel (because the adress of trapcc
makes no sense for another program).

To eliminate the bug this line must canged to (for example):
        if (signal (SIGINT, SIG_IGN) != SIG_IGN)
                signal (SIGINT, trapcc);

Similary for SIGQUIT.
So nothing is changed (to bad) if ignore is already adjusted, and
cc runs over cpp, cem, opt, cg well even if DEL is typed UNTIL
to asld. I think asld.c contains same line for removing his temp file !

The fix to cc.c should included in the 1.3c Version.
More difficult is the fix for asld. Here we are thrown upon a new binary
version from ast.

			Robert Regn							rtregn.faui32.uucp