Subject: Re: linux signal delivery & clone() bug
To: Matthias Scheler <tron@zhadum.de>
From: Jaromír Dolecek <dolecek@ibis.cz>
List: tech-kern
Date: 11/01/2000 14:58:49
(Moved off some private discussion)

Matthias Scheler wrote:
> On Wed, Nov 01, 2000 at 11:57:23AM +1100, Simon Burge wrote:
> > I haven't yet tried the patch in that PR to see if it fixes say mtv as
> > described in kern/10101.
> 
> Unfortunately it does not. But there might be a related problem in another
> system call which causes the "mtv" problem.

The issue described in kern/10981 is fixed also with my version of patch
(which has some comestic differences to the code in the PR).  I've also
tried to make shared only the signal handler function array (I
moved sa_mask and sa_flags to separate array), but that didn't help mtv
either. So kern/10981 is probably different bug - fixing it needs
to change struct proc which is unfortunate, but IMHO need to be
done (and pulled up to 1.5 branch).

It looks to me like Linux is using quite different mechanism
of signal delivery and queing, which LinuxThreads can depend on.
I haven't dug too deep into Linux code yet and I don't know
all the details of NetBSD signal handling. But it looks to me
like only one signal of any given type can be pending
on NetBSD, but there can be couple of them on Linux. If you
send multiple signals to a process under Linux, the signal
gets delivered multiple times, but this might not be case
on NetBSD if the process haven't had a chance to run
the signal handler since the previous signal of given type
was received. If this is true, it might be one of potential
problems - unfortunately changing this is not particularily easy :(

Jaromir
-- 
Jaromir Dolecek <jdolecek@NetBSD.org>      http://www.ics.muni.cz/~dolecek/
@@@@  Wanna a real operating system ? Go and get NetBSD, damn!  @@@@