:
:Thanks.
:
:> Ah, critnest... you are right.  I should be checking for
:>     critnest > 1.
:
:I think you should just leave it alone, don't check critnest at all.
:critnest != 1 is illegal because you can't acquire a sleep lock while
:in an enclosing critical section.
:
:Jake

    Hmm.  It locks up if I do that.  How odd.  No, it locks up in general.

    Ok, scratch this patch completely.  Something is seriously broken.  It
    is somehow getting stuck in a spin loop from here:

#9  0xc0262f96 in siointr1 (com=0xc5b9f800) at machine/cpufunc.h:66
#10 0xc0262e87 in siointr (arg=0xc5b9f800)
    at /FreeBSD/FreeBSD-current/src/sys/dev/sio/sio.c:1634
#11 0xc01ad3f8 in critical_exit () at machine/cpufunc.h:576
#12 0xc01a30d9 in _mtx_unlock_spin_flags (m=0xc02f6f00, opts=0, 
    file=0xc02ac900 "/FreeBSD/FreeBSD-current/src/sys/kern/kern_mutex.c", 
    line=335) at /FreeBSD/FreeBSD-current/src/sys/kern/kern_mutex.c:248
#13 0xc01a332d in _mtx_lock_sleep (m=0xc02f6f40, opts=0, 
    file=0xc02aab80 "/FreeBSD/FreeBSD-current/src/sys/kern/kern_intr.c", 
    line=532) at /FreeBSD/FreeBSD-current/src/sys/kern/kern_mutex.c:427
#14 0xc01a2f70 in _mtx_lock_flags (m=0xc02f6f40, opts=0, 
    file=0xc02aab80 "/FreeBSD/FreeBSD-current/src/sys/kern/kern_intr.c", 
    line=532) at /FreeBSD/FreeBSD-current/src/sys/kern/kern_mutex.c:210
#15 0xc019cc04 in ithread_loop (arg=0xc5b87400)
    at /FreeBSD/FreeBSD-current/src/sys/kern/kern_intr.c:532
#16 0xc019c0e4 in fork_exit (callout=0xc019cae0 <ithread_loop>, 
    arg=0xc5b87400, frame=0xe04b8d48)
    at /FreeBSD/FreeBSD-current/src/sys/kern/kern_fork.c:787

    And I'm not sure why.

                                        -Matt
                                        Matthew Dillon 
                                        <[EMAIL PROTECTED]>

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to