> Date: Sat, 21 Mar 2015 15:30:43 -0500 > From: Walter Daugherity <[email protected]> > > >Synopsis: Kernel panic - panic: mtx_enter: locking against myself > > >Category: kernel > > >Environment: > > System : OpenBSD 5.6 > > Details : OpenBSD 5.6 (GENERIC) #5: Thu Dec 11 11:38:13 CET 2014 > > [email protected]: > /binpatchng/work-binpatch56-i386/src/sys/arch/i386/compile/GENERIC > > > Architecture: OpenBSD.i386 > > Machine : i386 > > >Description: > > This is a 90MHz Pentium (Compaq Deskpro XL 590) used as a router > from my LAN to a dialup ISP (typical connection speed 22-38K). PPPD is > being logged with debug and kdebug, which places some load on the system. > Keep alive (LCP echo) interval is 10 seconds. > > > After installing OpenBSD 5.6 and configuring, the first panic ("mtx_enter: > locking against myself ") occurred when another computer on the LAN tried > to open a web page. I could not capture output so did not submit a bug > report. > > panic: mtx_enter: locking against myself > Stopped at Debugger+0x7: leave > RUN AT LEAST 'trace' AND 'ps' AND INCLUDE OUTPUT WHEN REPORTING THIS PANIC! > DO NOT EVEN BOTHER REPORTING THIS WITHOUT INCLUDING THAT INFORMATION! > ddb> trace > Debugger(d09f47d2,f216db78,d0202f34,f216db78,d0203009) at Debugger+0x7 > panic(d0202f34,f216dbb8,d03cf3e1,d0bb4a20,0) at panic+0x71 > mtx_enter(d0bb4a20,0,10,10,1) at mtx_enter+0x60 > pool_get(d0bb4a20,2,adb7,f216dbf4,d113fa00) at pool_get+0x31 > m_gethdr(2,1,f216dc28,d0430531,d0bd9008) at m_gethdr+0x3c > pppgetm(d1198800,d364b600,0,4d,d35d896c) at pppgetm+0x86 > pppinput(7e,d113fa00,0,2f8,d1111054) at pppinput+0x5a9 > comsoft(d1111000,d043380a,80,d0bb5a68,d0420620) at comsoft+0x14a > softintr_dispatch(2) at softintr_dispatch+0x5a > Xsofttty() at Xsofttty+0x12 > --- interrupt --- > pool_do_put(d0bb4a20,d364b400,0,d03eb04f,0) at pool_do_put+0x6b > pool_put(d0bb4a20,d364b400,0,0,3) at pool_put+0x26 > m_free_unlocked(d364b400,1,f216de0c,d03ec758,d36e7d10) at > m_free_unlocked+0x47 > m_freem(d364b400,d364b400,f216de40,0,0) at m_freem+0x28 > sendit(d3594178,20d,f216def0,0,f216df80) at sendit+0x140 > sys_sendmsg(d3594178,f216df60,f216df80,d02a15aa,80) at sys_sendmsg+0xf1 > syscall() at syscall+0x24d > --- syscall (number -1969453920) ---
This is caused by a missing splnet() somewhere. This has almost certainly been fixed in -current because the mbuf pools are now protected with IPL_NET. That fix will be in 5.7. 5.6 can probably be fixed by adding pool_setipl(&mbpool, IPL_NET); and pool_setipl(&mclpools[i], IPL_NET); immediately after the pool_init() calls in kern/uips_mbuf.c.
