On Wed, Mar 09, 2016 at 10:22:56PM +0900, Ryota Ozaki wrote:
> On Wed, Mar 9, 2016 at 8:45 PM, Thomas Klausner <[email protected]> wrote:
> > Hi!
> >
> > I have had this kind of reboot about 5 times in the last couple of days:
> >
> > Mar 8 16:26:14 yt savecore: reboot after panic: panic: kernel diagnostic
> > assertion "l->l_nopreempt == 0" failed: file
> > "/archive/foreign/src/sys/sys/userret.h", line 116 WARNING: SPL NOT
> > LOWERED ON SYSCALL 16384 24 EXIT ef20f930 6 WARNING: SPL NOT LOWERED ON
> > TRAP EXIT 6 0
> >
> > For some of them, I even have crash dumps:
> >
> > (gdb) target kvm netbsd.94.core
> > 0xffffffff801195a5 in cpu_reboot (howto=howto@entry=260,
> > bootstr=bootstr@entry=0x0) at
> > /archive/foreign/src/sys/arch/amd64/amd64/machdep.c:671
> > 671 dumpsys();
> > (gdb) bt
> > #0 0xffffffff801195a5 in cpu_reboot (howto=howto@entry=260,
> > bootstr=bootstr@entry=0x0) at
> > /archive/foreign/src/sys/arch/amd64/amd64/machdep.c:671
> > #1 0xffffffff8081c704 in vpanic (fmt=0xffffffff80e13840 "kernel
> > %sassertion \"%s\" failed: file \"%s\", line %d ",
> > ap=ap@entry=0xfffffe8154d51e58)
> > at /archive/foreign/src/sys/kern/subr_prf.c:342
> > #2 0xffffffff80b3edb3 in kern_assert (fmt=fmt@entry=0xffffffff80e13840
> > "kernel %sassertion \"%s\" failed: file \"%s\", line %d ")
> > at /archive/foreign/src/sys/lib/libkern/kern_assert.c:51
> > #3 0xffffffff8013d0e7 in mi_userret (l=0xfffffe84092b3460) at
> > /archive/foreign/src/sys/sys/userret.h:116
> > #4 userret (l=0xfffffe84092b3460) at ./machine/userret.h:82
> > #5 syscall (frame=0xfffffe8154d51f00) at
> > /archive/foreign/src/sys/arch/x86/x86/syscall.c:184
> > #6 0xffffffff80100661 in Xsyscall ()
> > (gdb) fr 3
> > #3 0xffffffff8013d0e7 in mi_userret (l=0xfffffe84092b3460) at
> > /archive/foreign/src/sys/sys/userret.h:116
> > 116 KASSERT(l->l_nopreempt == 0);
> > (gdb)
> >
> > I upgraded from a Jan 28 kernel to a March 3 kernel, and I think it
> > only started afterwards.
> >
> > Any ideas?
> > Thomas
>
> I saw similar panics and my commit at March 7 (if.c,v 1.326) fixed them.
> So updating your kernel may solve the problem.
This one?
Index: src/sys/net/if.c
diff -u src/sys/net/if.c:1.325 src/sys/net/if.c:1.326
--- src/sys/net/if.c:1.325 Fri Feb 19 20:05:43 2016
+++ src/sys/net/if.c Mon Mar 7 01:41:55 2016
@@ -770,6 +770,7 @@
ifq = percpu_getref(ipq->ipq_ifqs);
if (IF_QFULL(ifq)) {
IF_DROP(ifq);
+ percpu_putref(ipq->ipq_ifqs);
m_freem(m);
goto out;
}
What would trigger that case?
I'll try it out, thanks.
Thomas