NetBSD Problem Report #49691
From kamada@nanohz.org Tue Feb 24 13:10:41 2015
Return-Path: <kamada@nanohz.org>
Received: from mail.netbsd.org (mail.netbsd.org [149.20.53.66])
(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
(Client CN "mail.netbsd.org", Issuer "Postmaster NetBSD.org" (not verified))
by mollari.NetBSD.org (Postfix) with ESMTPS id 90C30A57FE
for <gnats-bugs@gnats.NetBSD.org>; Tue, 24 Feb 2015 13:10:41 +0000 (UTC)
Message-Id: <20150224221031NN%kamada@nanohz.org>
Date: Tue, 24 Feb 2015 22:10:31 +0900
From: KAMADA Ken'ichi <kamada@nanohz.org>
To: gnats-bugs@NetBSD.org
Cc: kamada@nanohz.org
Subject: KASSERT(l->l_md.md_gc_ptp == NULL) failed on NetBSD/amd64 7.0_BETA
>Number: 49691
>Category: kern
>Synopsis: KASSERT(l->l_md.md_gc_ptp == NULL) failed on NetBSD/amd64 7.0_BETA
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: closed
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Feb 24 13:15:00 +0000 2015
>Closed-Date: Sun Dec 18 21:14:23 +0000 2016
>Last-Modified: Sun Dec 18 21:14:23 +0000 2016
>Originator: KAMADA Ken'ichi
>Release: NetBSD 7.0_BETA
>Organization:
>Environment:
NetBSD example.org 7.0_BETA NetBSD 7.0_BETA (DIAG) #0: Mon Feb 23 23:16:18 JST 2015 ken@example.org:/usr/src/sys/arch/amd64/compile/DIAG amd64
Architecture: x86_64
Machine: amd64
kernel: GENERIC + options DIAGNOSTIC
>Description:
I see occasional panics on NetBSD/amd64 7.0_BETA boxes (checked out
on Feb. 23). Seen on both a real hardware (custom kernconf) and
a VirtualBox guest (GENERIC kernel).
The kernels have the DIAGNOSTIC option enabled.
panic: kernel diagnostic assertion "l->l_md.md_gc_ptp == NULL" failed: file "../../../../arch/x86/x86/vm_machdep.c", line 262
cpu0: Begin traceback...
vpanic() at netbsd:vpanic+0x13c
kern_assert() at netbsd:kern_assert+0x4f
cpu_lwp_free2() at netbsd:cpu_lwp_free2+0x42
lwp_free() at netbsd:lwp_free+0x22f
lwp_wait() at netbsd:lwp_wait+0x7c
exit_lwps() at netbsd:exit_lwps+0xca
exit1() at netbsd:exit1+0x65
sys_exit() at netbsd:sys_exit+0x3a
syscall() at netbsd:syscall+0x9a
--- syscall (number 1) ---
4a0a64:
cpu0: End traceback...
dumping to dev 0,1 (offset=1050072, size=130959):
dump
(gdb) bt
#0 0xffffffff805b2885 in cpu_reboot (howto=howto@entry=260,
bootstr=bootstr@entry=0x0) at ../../../../arch/amd64/amd64/machdep.c:671
#1 0xffffffff807ae1b4 in vpanic (
fmt=0xffffffff80bab850 "kernel %sassertion \"%s\" failed: file \"%s\", line %d ", ap=ap@entry=0xfffffe80027f4ca0) at ../../../../kern/subr_prf.c:340
#2 0xffffffff8093f003 in kern_assert (
fmt=fmt@entry=0xffffffff80bab850 "kernel %sassertion \"%s\" failed: file \"%s\", line %d ") at ../../../../../../lib/libkern/kern_assert.c:51
#3 0xffffffff808dbb34 in cpu_lwp_free2 (l=l@entry=0xfffffe800fc6baa0)
at ../../../../arch/x86/x86/vm_machdep.c:262
#4 0xffffffff8052d2f8 in lwp_free (l=0xfffffe800fc6baa0,
recycle=recycle@entry=false, last=last@entry=false)
at ../../../../kern/kern_lwp.c:1268
#5 0xffffffff8052e423 in lwp_wait (l=l@entry=0xfffffe8010a13640,
lid=lid@entry=0, departed=departed@entry=0x0, exiting=exiting@entry=true)
at ../../../../kern/kern_lwp.c:569
#6 0xffffffff8052453e in exit_lwps (l=l@entry=0xfffffe8010a13640)
at ../../../../kern/kern_exit.c:632
#7 0xffffffff805247a0 in exit1 (l=l@entry=0xfffffe8010a13640, rv=768)
at ../../../../kern/kern_exit.c:219
#8 0xffffffff80525056 in sys_exit (l=0xfffffe8010a13640,
uap=0xfffffe80027f4f00, retval=<optimized out>)
at ../../../../kern/kern_exit.c:181
#9 0xffffffff807c810a in sy_call (rval=0xfffffe80027f4eb8,
uap=0xfffffe80027f4f00, l=0xfffffe8010a13640,
sy=0xffffffff80f1a5b0 <sysent+16>) at ../../../../sys/syscallvar.h:61
#10 sy_invoke (code=1, rval=0xfffffe80027f4eb8, uap=0xfffffe80027f4f00,
l=0xfffffe8010a13640, sy=0xffffffff80f1a5b0 <sysent+16>)
at ../../../../sys/syscallvar.h:85
#11 syscall (frame=0xfffffe80027f4f00)
at ../../../../arch/x86/x86/syscall.c:156
#12 0xffffffff80100691 in Xsyscall ()
>How-To-Repeat:
Not known.
>Fix:
>Release-Note:
>Audit-Trail:
From: KAMADA Ken'ichi <kamada@nanohz.org>
To: gnats-bugs@NetBSD.org
Cc: kamada@nanohz.org
Subject: Re: kern/49691: KASSERT(l->l_md.md_gc_ptp == NULL) failed on NetBSD/amd64 7.0_BETA
Date: Sun, 08 Mar 2015 14:49:17 +0900
>How-To-Repeat:
The following program triggers this panic.
% cat > crash.go
package main
import "time"
func main() {
var s []int
s = make([]int, 1024 * 1024)
s = make([]int, 1024 * 1024)
s[0] = 1
time.Sleep(550 * time.Second)
}
^D
% go version
go version go1.4.2 netbsd/amd64
% go build crash.go
% ./crash
(Wait until the program exit.)
From: Mihai Chelaru <chelaru@gmail.com>
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/49691: KASSERT(l->l_md.md_gc_ptp == NULL) failed on
NetBSD/amd64 7.0_BETA
Date: Sun, 7 Aug 2016 20:50:03 +0100
The below patch fixes this issue, but I'd like someone with more
knowledge than me in this area to review it before anything else.
Index: sys/arch/x86/x86/vm_machdep.c
===================================================================
RCS file: /cvsroot/src/sys/arch/x86/x86/vm_machdep.c,v
retrieving revision 1.25
diff -d -u -p -r1.25 vm_machdep.c
--- sys/arch/x86/x86/vm_machdep.c 11 Mar 2014 20:55:19 -0000 1.25
+++ sys/arch/x86/x86/vm_machdep.c 7 Aug 2016 19:04:49 -0000
@@ -249,6 +249,20 @@ cpu_lwp_free(struct lwp *l, int proc)
if (proc && l->l_proc->p_md.md_flags & MDP_USEDMTRR)
mtrr_clean(l->l_proc);
#endif
+ /*
+ * Free the deferred mappings
+ */
+ if (l->l_md.md_gc_ptp != NULL) {
+ struct vm_page *ptp;
+ struct pmap_page *pp;
+
+ while ((ptp = l->l_md.md_gc_ptp) != NULL) {
+ pp = &ptp->mdpage.mp_pp;
+ l->l_md.md_gc_ptp = pp->pp_link;
+ LIST_INIT(&pp->pp_head.pvh_list);
+ uvm_pagefree(ptp);
+ }
+ }
}
/*
From: KAMADA Ken'ichi <kamada@nanohz.org>
To: gnats-bugs@NetBSD.org
Cc: chelaru@gmail.com
Subject: Re: kern/49691: KASSERT(l->l_md.md_gc_ptp == NULL) failed on NetBSD/amd64 7.0_BETA
Date: Mon, 08 Aug 2016 14:40:36 +0900
My previous patch
<https://mail-index.netbsd.org/port-amd64/2015/06/23/msg002276.html>
does the same thing as Mihai's one. My concern was that the patch may
not fix the root cause but just hide the symptom.
From: coypu@SDF.ORG
To: gnats-bugs@netbsd.org
Cc:
Subject: Re: kern/49691
Date: Mon, 8 Aug 2016 10:47:00 +0000
I thought it might have to do with PR/42663.
From: Mihai Chelaru <chelaru@gmail.com>
To: "KAMADA Ken'ichi" <kamada@nanohz.org>
Cc: gnats-bugs@netbsd.org
Subject: Re: kern/49691: KASSERT(l->l_md.md_gc_ptp == NULL) failed on
NetBSD/amd64 7.0_BETA
Date: Tue, 9 Aug 2016 09:19:36 +0100
Oh, I wasn't aware there is a patch already. Indeed, I don't know if
we should have deferred mappings by the time cpu_lwp_free() is called.
On Mon, Aug 8, 2016 at 6:40 AM, KAMADA Ken'ichi <kamada@nanohz.org> wrote:
> My previous patch
> <https://mail-index.netbsd.org/port-amd64/2015/06/23/msg002276.html>
> does the same thing as Mihai's one. My concern was that the patch may
> not fix the root cause but just hide the symptom.
From: Thomas Klausner <tk@giga.or.at>
To: NetBSD bugtracking <gnats-bugs@NetBSD.org>
Cc:
Subject: Re: kern/49691
Date: Mon, 7 Nov 2016 23:19:25 +0100
I just saw this on -current (7.99.42 from Nov 2), also with a go
program (syncthing).
Below my mail to current-users:
----- Forwarded message from Thomas Klausner <tk@giga.or.at> -----
Hi!
Today I was running a bulk build and an idle syncthing
(net/syncthing). When I tried to quit syncthing using CTRL-C (which
worked once before on the same day), I got a kernel panic:
panic: kernel diagnostic assertion "l->l_md.md_gc_ptp == NULL" failed: file "/disk/6/archive/foreign/src/sys/arch/x86/x86/vm_machdep.c", line 262 WARNING: SPL NOT LOWERED ON SYSCALL 146 4 EXIT 81c27c08 6
dmesg on boot contained lots of spam at the start:
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 233 4 EXIT 81c27c08 6
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 1 6 EXIT 0 7
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 233 4 EXIT 81c27c08 6
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 1 6 EXIT 0 7
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 233 4 EXIT 81c27c08 6
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
lwp_userret() at WARNING: SPL NOT LOWERED ON SYSCALL 1 6 EXIT 0 7
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 250 4 EXIT 81c27c08 6
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
netbsd:lwp_userret+0xf9
WARNING: SPL NOT LOWERED ON SYSCALL 1 6 EXIT 0 7
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 257 4 EXIT 81c27c08 6
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWEREDW OANR NSIYNSGC:A LSLP L1 N6O TE XLIOTW E0R E7D
ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 233 4 EXIT 81c27c08 6
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 1 6 EXIT 0 7
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 233 4 EXIT 81c27c08 6
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 77 13 EXIT 60139800 6
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL W1A R6N IENXGI:T S0P L7
NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 33s3y s4c aElXlI(T) W 8Aa1RtcN 2I7NcG0:8 S6P
L NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 1 6 EXIT 0 7
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 288 4 EXIT 81c27c08 6
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
netbsd:syscall+0x208
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED O- -S- YsSysCcAaLlLl 1( n6u mbEerX 4I)T -0- -
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 279 4 EXIT 81c27c08 6
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 1 6 EXIT 0 7
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
4930ba:
WARNING: SPL NOT LOWERED ON SYSCALL 283 4 EXIT 81c27c08 6
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
cpu6: End traceback...
WARNING: SPL NOT LOWERED ON TRAP EXIT 6 0
WARNING: SPL NOT LOWERED ON SYSCALL 1 6 EXIT 0 7
dumping to dev 168,3 (offset=8, size=8373576):
dump Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016
The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
NetBSD 7.99.42 (KVOTHE) #23: Wed Nov 2 09:38:07 CET 2016
wiz@yt.nih.at:/disk/6/archive/foreign/src/sys/arch/amd64/compile/obj/KVOTHE
...
netbsd.core.101.gz exists, so I can provide more detail:
(gdb) bt
#0 0xffffffff80119a85 in cpu_reboot (howto=howto@entry=260, bootstr=bootstr@entry=0x0) at /disk/6/archive/foreign/src/sys/arch/amd64/amd64/machdep.c:676
#1 0xffffffff8089072c in vpanic (fmt=0xffffffff80ed31f8 "kernel %sassertion \"%s\" failed: file \"%s\", line %d ", ap=ap@entry=0xfffffe8720904d78)
at /disk/6/archive/foreign/src/sys/kern/subr_prf.c:342
#2 0xffffffff80bd0b65 in kern_assert (fmt=fmt@entry=0xffffffff80ed31f8 "kernel %sassertion \"%s\" failed: file \"%s\", line %d ")
at /disk/6/archive/foreign/src/sys/lib/libkern/kern_assert.c:51
#3 0xffffffff8013efa7 in cpu_lwp_free2 (l=l@entry=0xfffffe82c7577360) at /disk/6/archive/foreign/src/sys/arch/x86/x86/vm_machdep.c:262
#4 0xffffffff8084be91 in lwp_free (l=0xfffffe82c7577360, recycle=recycle@entry=false, last=last@entry=false) at /disk/6/archive/foreign/src/sys/kern/kern_lwp.c:1263
#5 0xffffffff8084cc66 in lwp_exit (l=l@entry=0xfffffe824b4a1700) at /disk/6/archive/foreign/src/sys/kern/kern_lwp.c:1093
#6 0xffffffff8084cf39 in lwp_userret (l=l@entry=0xfffffe824b4a1700) at /disk/6/archive/foreign/src/sys/kern/kern_lwp.c:1555
#7 0xffffffff8013e5c9 in mi_userret (l=0xfffffe824b4a1700) at /disk/6/archive/foreign/src/sys/sys/userret.h:94
#8 userret (l=0xfffffe824b4a1700) at ./machine/userret.h:82
#9 syscall (frame=0xfffffe8720904f00) at /disk/6/archive/foreign/src/sys/arch/x86/x86/syscall.c:184
#10 0xffffffff80100761 in Xsyscall ()
Let me know if I should file a PR and what more information you'd like to see.
Thanks,
Thomas
----- End forwarded message -----
From: "Christos Zoulas" <christos@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/49691 CVS commit: src/sys/arch/x86
Date: Mon, 7 Nov 2016 22:05:36 -0500
Module Name: src
Committed By: christos
Date: Tue Nov 8 03:05:36 UTC 2016
Modified Files:
src/sys/arch/x86/include: pmap.h
src/sys/arch/x86/x86: pmap.c vm_machdep.c
Log Message:
PR/49691: KAMADA Ken'ichi: free deferred ptp mappings if present.
XXX: pullup-7
To generate a diff of this commit:
cvs rdiff -u -r1.60 -r1.61 src/sys/arch/x86/include/pmap.h
cvs rdiff -u -r1.222 -r1.223 src/sys/arch/x86/x86/pmap.c
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/x86/x86/vm_machdep.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: open->feedback
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Mon, 21 Nov 2016 06:55:39 +0000
State-Changed-Why:
is this fixed?
From: KAMADA Ken'ichi <kamada@nanohz.org>
To: gnats-bugs@NetBSD.org
Cc: dholland@NetBSD.org, kamada@nanohz.org
Subject: Re: kern/49691 (KASSERT(l->l_md.md_gc_ptp == NULL) failed on NetBSD/amd64 7.0_BETA)
Date: Tue, 22 Nov 2016 22:45:09 +0900
Fixed in -current, but not yet in netbsd-7.
From: "Soren Jacobsen" <snj@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/49691 CVS commit: [netbsd-7] src/sys/arch/x86
Date: Sun, 18 Dec 2016 07:01:57 +0000
Module Name: src
Committed By: snj
Date: Sun Dec 18 07:01:57 UTC 2016
Modified Files:
src/sys/arch/x86/include [netbsd-7]: pmap.h
src/sys/arch/x86/x86 [netbsd-7]: pmap.c vm_machdep.c
Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1316):
sys/arch/x86/x86/pmap.c: revision 1.223
sys/arch/x86/x86/vm_machdep.c: revision 1.26
sys/arch/x86/include/pmap.h: revision 1.61
PR/49691: KAMADA Ken'ichi: free deferred ptp mappings if present.
XXX: pullup-7
To generate a diff of this commit:
cvs rdiff -u -r1.55.4.1 -r1.55.4.2 src/sys/arch/x86/include/pmap.h
cvs rdiff -u -r1.183.2.4 -r1.183.2.5 src/sys/arch/x86/x86/pmap.c
cvs rdiff -u -r1.25 -r1.25.4.1 src/sys/arch/x86/x86/vm_machdep.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
From: "Soren Jacobsen" <snj@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc:
Subject: PR/49691 CVS commit: [netbsd-7-0] src/sys/arch/x86
Date: Sun, 18 Dec 2016 07:02:59 +0000
Module Name: src
Committed By: snj
Date: Sun Dec 18 07:02:59 UTC 2016
Modified Files:
src/sys/arch/x86/include [netbsd-7-0]: pmap.h
src/sys/arch/x86/x86 [netbsd-7-0]: pmap.c vm_machdep.c
Log Message:
Pull up following revision(s) (requested by riastradh in ticket #1316):
sys/arch/x86/x86/pmap.c: revision 1.223
sys/arch/x86/x86/vm_machdep.c: revision 1.26
sys/arch/x86/include/pmap.h: revision 1.61
PR/49691: KAMADA Ken'ichi: free deferred ptp mappings if present.
XXX: pullup-7
To generate a diff of this commit:
cvs rdiff -u -r1.55.4.1 -r1.55.4.1.2.1 src/sys/arch/x86/include/pmap.h
cvs rdiff -u -r1.183.2.2.2.1 -r1.183.2.2.2.2 src/sys/arch/x86/x86/pmap.c
cvs rdiff -u -r1.25 -r1.25.8.1 src/sys/arch/x86/x86/vm_machdep.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
State-Changed-From-To: feedback->closed
State-Changed-By: dholland@NetBSD.org
State-Changed-When: Sun, 18 Dec 2016 21:14:23 +0000
State-Changed-Why:
pullups completed, and I guess this is fixed.
>Unformatted:
(Contact us)
$NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2014
The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.