Subject: pools, interrupt context, kpsignal2
To: None <tech-kern@netbsd.org>
From: Eric Haszlakiewicz <erh@nimenees.com>
List: tech-kern
Date: 11/06/2006 09:07:20
I'm wondering if sending a signal to a process is supposed to work from
a interrupt handler.  I got a fairly reasonable looking traceback from
my machine when it hangs, and it looks like it's getting stuck in a pool_get
call in kpsignal2().  This happens often when I'm running a linux-emul'd
firefox binary.  I've got a USB mouse and keyboard plugged in.  Looking
at the traceback, that seems somewhat relevant:

--- interrupt ---
pool_get(c053f020,0,0,fffffffe,0) at netbsd:pool_get+0x36
kpsignal2(cb912494,c04fd454,2,0,0) at netbsd:kpsignal2+0x15a
psignal1(cb8a71ac,17,1,0,cb912568) at netbsd:psignal1+0x35
wsevent_wakeup(c109f540,cb9be0bc,cba61988,cb912678,0) at netbsd:wsevent_wakeup
...
ums_intr(c11a9400,c0f26a30,5,1000,c1131000) at netbsd:ums_intr+0x129
...
--- interrupt ---
pool_get(c053f020,0,cb912c04,0,ccdf4d64) at netbsd:pool_get+0x36
kpsignal2(cb8a71ac,cb9129f0,0,1,c04fdbf4) at netbsd:kpsignal2+0x15a
itimerfire(cbb96e0c,cb912a84,c02f2bcb,c0508f40,cb8a7698) at netbsd:itimerfire+
...
--- interrupt ---
pool_get(c053f020,0,0,21,cc52c1c0) at netbsd:pool_get+0x2f
kpsignal2(cb912bbc,c0502964,cb912bb4,c03ddcc3,0) at netbsd:kpsignal2+0x15a
sys_kill(ccdf4d64,cb912c14,cb912c68,202,ccdf4d64) at netbsd:sys_kill+0xae
linux_sys_kill(ccdf4d64,cb912c48,cb912c68,202,bbbe7000) at netbsd:linux_sys_ki

I'm hoping to get some time to take a closer look at this soon, but maybe
the problem here will be obvious to someone who's already familiar with
the code...

eric