[LOR] kqueue()

Craig Rodrigues rodrigc at crodrigues.org
Sun Jul 17 15:39:50 GMT 2005


On Sat, Jul 16, 2005 at 10:44:43PM +0000, Wojciech A. Koszek wrote:
> http://FreeBSD.czest.pl/dunstan/kqueuetest.c
> 
> Compile:
> [1] gcc kqueuetest.c -o kqueuetest
> Run with shell's PID:
> [2] ./kqueuetest $$
> [3] Suspend execution with CTRL^Z and move task to
>     background: bg %1

I can reproduce this LOR:

13 0xc066291c in _mtx_assert (m=0xc1bff600, what=0, 
    file=0xc0878298 "/usr/src/sys/kern/kern_event.c", line=1039)
    at /usr/src/sys/kern/kern_mutex.c:751
#14 0xc065180e in kqueue_expand (kq=0xc1bff600, fops=0x0, ident=3014, waitok=0)
    at /usr/src/sys/kern/kern_event.c:1039
#15 0xc0651261 in kqueue_register (kq=0xc1bff600, kev=0xd15f0c40, td=0x0, 
    waitok=0) at /usr/src/sys/kern/kern_event.c:828
#16 0xc065068e in filt_proc (kn=0xc18af6e8, hint=0)
    at /usr/src/sys/kern/kern_event.c:413
#17 0xc0652644 in knote (list=0xc1b071b4, hint=1073744838, islocked=1)
    at /usr/src/sys/kern/kern_event.c:1548
#18 0xc0656c24 in fork1 (td=0xc1b034b0, flags=20, pages=0, procp=0xd15f0cd4)
    at /usr/src/sys/kern/kern_fork.c:696
#19 0xc0655bd8 in fork (td=0xc1b034b0, uap=0xd15f0d04)
    at /usr/src/sys/kern/kern_fork.c:96



It looks like on line 1545 of kern_event.c, we have a KQ_LOCK(kq);,
and then on line 1039, the KQ_NOTOWNED(kq); assertion fails, because
the lock is never released.

-- 
Craig Rodrigues        
rodrigc at crodrigues.org


More information about the freebsd-current mailing list