NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/54821: 9.99.32 assertion in uvm_pageactivate
>Number: 54821
>Category: kern
>Synopsis: 9.99.32 assertion in uvm_pageactivate
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Jan 01 12:30:00 +0000 2020
>Originator: Michael van Elst
>Release: NetBSD 9.99.32
>Organization:
>Environment:
System: NetBSD tazz 9.99.32 NetBSD 9.99.32 (GENERIC)
Architecture: x86_64
Machine: amd64
>Description:
With a -current kernel of today, the system boots but panics late in
the startup sequence.
panic: kernel diagnostic assertion "mutex_owned(&pg->interlock)" failed: file "/scratch/netbsd-current/src/sys/uvm/uvm_page.c", line 1824
The backtrace shows:
vpanic + 0x178
kern_assert + 0x48
uvm_pageactivate + 0x65
amap_cow_now + 0x113
uvmspace_fork + 0x2ec
uvm_proc_fork + 0x3c
fork1 + 0x3ea
sys_fork + 0x29
syscall + 0x299
--- syscall (number 2) ---
then follows a fatal breakpoint trap in supervisor mode over
a rather random address (cr2 = 78f8817f208c).
>How-To-Repeat:
Boot 9.99.32 on amd64 under some unknown conditions.
>Fix:
Maybe just:
Index: sys/uvm/uvm_amap.c
===================================================================
RCS file: /cvsroot/src/sys/uvm/uvm_amap.c,v
retrieving revision 1.111
diff -p -u -r1.111 uvm_amap.c
--- sys/uvm/uvm_amap.c 13 Dec 2019 20:10:22 -0000 1.111
+++ sys/uvm/uvm_amap.c 1 Jan 2020 12:26:10 -0000
@@ -1069,7 +1069,9 @@ ReStart:
* Drop PG_BUSY on new page. Since its owner was locked all
* this time - it cannot be PG_RELEASED or PG_WANTED.
*/
+ uvm_pagelock(npg);
uvm_pageactivate(npg);
+ uvm_pageunlock(npg);
npg->flags &= ~(PG_BUSY|PG_FAKE);
UVM_PAGE_OWN(npg, NULL);
}
>Unformatted:
Home |
Main Index |
Thread Index |
Old Index