Date: Wed, 30 Jun 2010 12:05:14 -0400 From: John Baldwin <jhb@freebsd.org> To: Matthew Jacob <mj@feral.com> Cc: svn-src-head@freebsd.org, Ed Schouten <ed@80386.nl> Subject: Re: svn commit: r209595 - head/sys/kern Message-ID: <201006301205.14133.jhb@freebsd.org> In-Reply-To: <4C2B4DC6.1050404@feral.com> References: <201006292044.o5TKiJd7031766@svn.freebsd.org> <201006300934.47629.jhb@freebsd.org> <4C2B4DC6.1050404@feral.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 30 June 2010 9:59:34 am Matthew Jacob wrote:
> Excuse my ignorance, but aren't signals supposed to be to processes, not
> specific threads?
Not for synchronous events. For example, when you get a segfault due to a
NULL pointer the SIGSEGV is sent to the thread that actually segfaulted, not
any random thread in the process. Similarly for floating-point exceptions,
etc. POSIX also mandates this for SIGPIPE as you can see from this
description of 'EPIPE' from write(2) and fflush(3):
[EPIPE]
An attempt is made to write to a pipe or FIFO that is not open for
reading by any process, or that only has one end open. A SIGPIPE signal
shall also be sent to the thread.
(Note thread, not process, in other places the language uses process, but it
specifically uses thread here.)
> My memory/knowledge of Posix in this area is very rusty.
>
> > On Tuesday 29 June 2010 5:05:22 pm Ed Schouten wrote:
> >
> >> * John Baldwin<jhb@FreeBSD.org> wrote:
> >>
> >>> Log:
> >>> Send SIGPIPE to the thread that issued the offending system call
> >>> rather than to the entire process.
> >>>
> >> Should something similar be used inside the TTY layer, where
> >> reads/writes may cause signals to be generated?
> >>
> > Hmm, I'm not sure. I do think you want to stop the entire process for SIGTTOU
> > or SIGTTIN (often the entire process group it seems), so I'm not sure if it
> > matters if the signal is sent to only the current thread versus sending it to
> > any thread in the process.
> >
> >
>
>
--
John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006301205.14133.jhb>
