> 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.

Reply via email to