Another race in signal handling

Marc Lehmann schmorp at schmorp.de
Mon Jan 21 18:20:19 CET 2008


On Mon, Jan 21, 2008 at 11:25:49AM -0500, Chris Shoemaker <c.shoemaker at cox.net> wrote:
> > gotsig simply controls wether the event loop should be woken up, signals
> > cannot go lost even when gotsig is forced to be 1 all the time (but it can
> > delay signal handling indefinitely).
> 
> Ok, I like your terms better than mine.  Since I know libev has
> recorded the receipt of the signal, and I'm waiting for the ev_signal
> watcher's callback to be called, this "indefinite delay" (infinite
> delay, really, since the callback will never be called) is rather
> troublesome.

It would be, if it existed. Please read carefully what I wrote: "when
gotsig is forced to be 1 all the time", which is definitely not the case.

> > Are you sure you didn't tinker with the code in other places and this is a
> > pristine copy of libev you are looking at?
> 
> It's pristine except that I have disabled the childev watcher in exactly
> the same way it's disabled on win32, like so:

Looks ok.

> > Without the actual problem report, such analyses are, however, useless.
> 
> I figured that describing the exact time when interuption by a signal
> causes signal watchers to be "indefinitely delayed" would be helpful,

It would be, but you didn't do that, because you were not talking about
the actual code but about something else.

And please stop twisting around my words - I clearly said that this is
only true if gotsig were forced to be 1, which isn't the case. You now
make it seem as if I said there would always be such a delay.

> but if you find testcases more helpful, I'm very glad to oblige.  Here

Thsanks, will have a look - what you didn't mention, for example, is that you
fork, which is likely the crucial point.

> So far, I'm operating under the assumption that this global gotsig
> variable serves no useful purpose.  If I'm wrong, please correct me.

You always assume something is useless if you don't understand
it: Don't. Try to understand it, don't make wrong assumptions.

-- 
                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_              http://www.deliantra.net
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      pcg at goof.com
      -=====/_/_//_/\_,_/ /_/\_\



More information about the libev mailing list