Date: Thu, 8 Jan 2004 19:17:42 +0100 (CET) From: rmkml <rmkml@wanadoo.fr> To: Daniel Eischen <eischen@vigrid.com> Cc: freebsd-hackers@freebsd.org Subject: Re: problem with signal handling and threads (fbsd49R) Message-ID: <Pine.LNX.4.58.0401081916290.12240@hp.mgn.net> In-Reply-To: <Pine.GSO.4.10.10401080845330.13804-100000@pcnet5.pcnet.com> References: <Pine.GSO.4.10.10401080845330.13804-100000@pcnet5.pcnet.com>
next in thread | previous in thread | raw e-mail | index | archive | help
please can you give me an example of mask to SET BLOCK ou UNBLOCK in both threads (main and run) in order to make this sample code working ? thanks a lot. On Thu, 8 Jan 2004, Daniel Eischen wrote: > Date: Thu, 8 Jan 2004 08:48:34 -0500 (EST) > From: Daniel Eischen <eischen@vigrid.com> > To: rmkml <rmkml@wanadoo.fr> > Cc: freebsd-hackers@freebsd.org > Subject: Re: problem with signal handling and threads (fbsd49R) > > On Thu, 8 Jan 2004, rmkml wrote: > > > Hi, > > > > I've got a problem with signal handling and threads. > > I've reproduced the problem in a simple code. > > Description of program: > > install a signal handler SIGINT. > > create a thread that do nothing except waiting. > > main thread use poll to wait forever [ poll(,,-1) ]. > > user has too crtl-C to interrupt poll > > after 5 ctrl-C, loop is over and main-thread signals sub-thread to > > stops. > > > > In fact, it appears not to work correctly: after one ctrl-C, user has to > > press ctrl-C twice before poll returns with errno=EINTR !! > > If the thread creation is removed from code, the expected behavior is > > seen : the program works fine. > > > > If I replace the poll by sigsuspend() the program works fine too. > > > > Is there something wrong with poll function ? > > No, it's your program. Why do you think the signal will > only be delivered to the main thread and not the other > (run) thread? If you want a particular thread to receive > a signal, then you had better set up signal masks for > all threads appropriately (or use sigwait()). > > > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.LNX.4.58.0401081916290.12240>