Date: Mon, 21 Dec 1998 14:53:21 -0500 From: Larry Ching <lching@cisco.com> To: Daniel Eischen <eischen@vigrid.com> Cc: hackers@FreeBSD.ORG, lching@cisco.com Subject: Re: pthreads question Message-ID: <367EA731.BFAB48C3@cisco.com> References: <199812211933.OAA01713@pcnet1.pcnet.com>
index | next in thread | previous in thread | raw e-mail
Daniel Eischen wrote:
> Larry Ching wrote:
>
> > > A quick glance of the code shows that this is what happens only
> > > if the signal is blocked in the thread. If the signal is unblocked,
> > > then the thread should return with EINTR. Use sigprocmask(2) to
> > > unblock the signal in the thread that you want to interrupt.
> >
> > Thank you for your help above. The thread in question was making acall
> > to pthread_sigmask(SIG_UNBLOCK,...) to unblock the signal I
> > was using in pthread_kill(). I changed this call to
> > sigprocmask(SIG_UNBLOCK, ...) with no effect. The thread remains
> > blocked in the read() call and no EINTR error code is returned.
> >
> > Any suggestions as to where to look next???
>
> You haven't set the action for the signal to SIG_IGN, have you?
There is this code segment in the thread to be killed:
struct sigaction sa;
sigset_t setUser1;
sa.sa_handler = SigUsr1Handler;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
sigaction(SIGUSR1, &sa, NULL);
sigemptyset(&setUser1);
sigaddset(&setUser1, SIGUSR1);
sigprocmask(SIG_UNBLOCK, &setUser1, NULL);
//pthread_sigmask(SIG_UNBLOCK, &setUser1, NULL);
where SigUsr1Handler is defined as:
void SigUsr1Handler(int signal)
{
}
My understanding is that this guarantees the action to not
be SIG_IGN. I don't understand why this is not sufficient
for the read() call to be interrupted.
> Got a simple prgram to demonstrate the problem?
No, but I will attempt to create one.
Larry Ching
Cisco Systems
lching@cisco.com
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?367EA731.BFAB48C3>
