Subject: Re: SIGTRAP for traced processes and COMPAT_MACH
To: Martin Husemann <martin@duskware.de>
From: Emmanuel Dreyfus <manu@netbsd.org>
List: tech-kern
Date: 11/29/2003 15:08:33
Martin Husemann <martin@duskware.de> wrote:

> In step 2 check the exception vector in place and do the right thing (tm)?

Let me rephrase, I was a bit confusing (and confused).

1) the process sets an exception handler to catch memory faults
If we handle that using the signal mask, then we set it to catch SIGSEGV
so that we can generate an exception instead of a signal in
darwin_sendsig().

2) the process sets its signal mask to mask SIGSEGV  
What do we do? We would check the exception vector, see that we really
want SIGSEGV so that we can raise exceptions for memory faults in
darwin_sendsig(). and therefore we would decide to ignore the request.

3) the process destroys the port that catches memory faults exceptions
Here, we would restore the signal mask to receive SIGSEGV? This
anihiliate what the process requested in step 2, and we are not
consistent with Darwin.  

-- 
Emmanuel Dreyfus
Il y a 10 sortes de personnes dans le monde: ceux qui comprennent 
le binaire et ceux qui ne le comprennent pas.
manu@netbsd.org