panic caused by EVFILT_SIGNAL detaching in rfork()ed thread

John-Mark Gurney gurney_j at
Wed Sep 1 16:56:58 PDT 2004

Igor Sysoev wrote this message on Wed, Sep 01, 2004 at 23:07 +0400:
> On Wed, 1 Sep 2004, John-Mark Gurney wrote:
> > > > The problem is some how that the knote is being removed from the list
> > > > (or was never on the list), but not being marked detached...
> > > >
> > > > Hmmm. what are the options you are using for rfork?
> > >
> > > The worker process starts two worker threads created by
> > > rfork(RFPROC|RFTHREAD|RFMEM). Each thread opens kqueue and
> > > adds the EVFILT_SIGNAL event.
> > >
> > > If you like I can send to you the source tarball (I do not distribute
> > > the server right now, because it has not the documentation). The build
> > > process is simple. Then you need to press ^C and you will get the panic.
> >
> > I believe this panic may be possible w/o rfork, but I'm not possitive..
> > It's probably an artifact of the fact that the kq was living longer
> > than the proc that had the signal kevent associated with it, which
> > normally does not happen...
> >
> > Attached is a patch..  And let me know if it fixes your panic...
> The patch fixed the panic (I tested on 5.3-BETA2, GENERIC, SMP, HTT,
> SCHED_ULE). Thank you. Could you make the similar patch for 4.x ?

I'm not familar enough with kqueue in 4.x, so I would just add a similar
if (kn->kn_status & KN_DETACHED)

to the filt_sigdetach function like the other detach functions...

> And one more, could you rename
> into and place a modern (or at least from
> 4.1-RELEASE) kqueue man page in ? Google shows your
> man page at first position and it confuses people. I saw several times
> when people said that kqueue has the incompatible interface between BSDs
> and even between various FreeBSD verisons referring to this man page.

I've renamed it, but I will send admins an email to try to add a
redirect so that broken links won't plauge the net...

  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."

More information about the freebsd-current mailing list