I'm trying to understand the cause of following panic.

panic: Trying sleep, but thread marked as sleeping prohibited
cpuid = 0
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2a
panic() at panic+0x17d
sleepq_add() at sleepq_add+0x2e1
_sx_slock_hard() at _sx_slock_hard+0x15d
_sx_slock() at _sx_slock+0xc1
pfind() at pfind+0x24
saa_intr() at saa_intr+0x313
ithread_loop() at ithread_loop+0xda
fork_exit() at fork_exit+0x12a
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xffffffffac3c0d30, rbp = 0 ---

Can someone enlighten me on what is causing the panic and is it ok to
use pfind() in interrupt handler (I have very limited understanding of
kernel internals)?

Code in question (taken from saa driver
http://freebsd.ricin.com/ports/distfiles/kbtv-1.92.tbz) can be found at

freebsd-hackers@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"