Date: Thu, 28 Feb 2008 16:17:45 +0300 From: pluknet <pluknet@gmail.com> To: "Yuri Pankov" <yuri.pankov@gmail.com> Cc: freebsd-hackers@freebsd.org Subject: Re: pfind() in ithread handler Message-ID: <a31046fc0802280517y476ee6cela57ab33137f33f58@mail.gmail.com> In-Reply-To: <20080228111222.GE92245@mail.irbisnet.ru> References: <20080228111222.GE92245@mail.irbisnet.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
On 28/02/2008, Yuri Pankov <yuri.pankov@gmail.com> wrote: > Hi, > > 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 > http://www.pastebin.ca/921830 > > > TIA, > Yuri You cannot sleep in high priority ithread handler, pfind() uses sleepable sx(9) lock. In your case it fail to acquire a shared lock and trying to sleep. Probably you should call pfind() elsewhere. wbr, pluknet
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a31046fc0802280517y476ee6cela57ab33137f33f58>
