Date: Thu, 07 Jun 2001 16:52:16 +0200 From: Stefan Hoffmeister <freebsd-ml@econos.de> To: freebsd-hackers@FreeBSD.ORG Subject: Re: libc_r, signal handler ucontext modification Message-ID: <if4vht0v8dlrc51kuokta0cs0r5p7flef9@4ax.com> In-Reply-To: <j5vuhtsb6uoenhdpo23qo2ouerqs0i17lm@4ax.com> References: <j5vuhtsb6uoenhdpo23qo2ouerqs0i17lm@4ax.com>
index | next in thread | previous in thread | raw e-mail
: On Thu, 07 Jun 2001 15:21:31 +0200, Stefan Hoffmeister wrote:
>I admit that all this is somewhat anecdotal, but I haven't looked in
>detail yet at what happens after the signal handler has returned to
>
> uthread/uthread_sig.c -> _thread_sig_wrapper
Looking at code in question, I wonder whether in uthread_sig.c this code:
*********************************
static void
thread_sigframe_add(pthread_t thread, int sig, int has_args)
{
...
if (has_args) {
/* Copy the signal handler arguments to the signal frame: */
memcpy(&psf->uc, &_thread_sigq[psf->signo - 1].uc,
sizeof(psf->uc));
memcpy(&psf->siginfo, &_thread_sigq[psf->signo - 1].siginfo,
sizeof(psf->siginfo));
}
...
*********************************
should get matching code
*********************************
void
_thread_sigframe_restore(pthread_t thread, struct pthread_signal_frame
*psf)
{
thread->ctxtype = psf->ctxtype;
- memcpy(&thread->ctx.uc, &psf->ctx.uc, sizeof(thread->ctx.uc));
+ if (psf->sig_has_args)
+ memcpy(&thread->ctx.uc, &psf->uc, sizeof(thread->ctx.uc));
+ else
+ memcpy(&thread->ctx.uc, &psf->ctx.uc, sizeof(thread->ctx.uc));
*********************************
or something like that.
The above is completely untested, based on five minutes of staring at the
code, not even compiled, and I have no idea what I am doing :-)
Thoughts?
TIA,
Stefan
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?if4vht0v8dlrc51kuokta0cs0r5p7flef9>
