Another race in signal handling

Marc Lehmann schmorp at schmorp.de
Mon Jan 21 18:39:12 CET 2008


On Mon, Jan 21, 2008 at 11:25:49AM -0500, Chris Shoemaker <c.shoemaker at cox.net> wrote:
> I figured that describing the exact time when interuption by a signal
> causes signal watchers to be "indefinitely delayed" would be helpful,

Again, it would have been helpful when you had done that, but instead you
came up with an obviously wrong (because it doesn't match the code)
explanation that is not helpful to anybody.

A good explanation is actually better than a testcase, but a wrong one is
simply absolutely useless, while a testcase is a tedious but sure way to
find bugs.

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

In this case, it is the only thing you delivered, so there is no "more
helpful" here - the choice is between an explanation that has nothign to do
with the code or the problem, or a testcase. Given that choice, it is obvious
that a testcase is "more helpful".

> Here it is

I cannot reproduce that with the current (CVS) version and various
settings for the interval timer, but it looks like a race condition that
was recently fixed in libev regarding forking and signal delivery (where
signal delivery could indeed be delayed).

Your "fix" of removing gotsig only has the effect of shrinking the time
window of this problem occuring, it doesn't fix any underlying issue at
all.

You really shouldn't hack around in the code without understanding it. It
really is best to let people fix it who understand it, lest you will run
blindly into problems that are much harder to debug (because much rarer).

It is, however, your right to hack around in libev, and if you feel you
must add bugs to it, or obfuscate existing bugs without fixing them, you
should do it.

-- 
                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