NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/54945 (nfs uvm_pagegetdirty panic)
The following reply was made to PR kern/54945; it has been noted by GNATS.
From: Rin Okuyama <rokuyama.rk%gmail.com@localhost>
To: gnats-bugs%netbsd.org@localhost, ad%netbsd.org@localhost, gnats-admin%netbsd.org@localhost,
netbsd-bugs%netbsd.org@localhost, prlw1%cam.ac.uk@localhost
Cc:
Subject: Re: kern/54945 (nfs uvm_pagegetdirty panic)
Date: Thu, 20 Feb 2020 18:16:47 +0900
I can now reproduce the assertion failure
panic: kernel diagnostic assertion "uobj == NULL || !UVM_OBJ_IS_CLEAN(uobjpage->uobject) || uvm_pagegetdirty(uobjpage) == UVM_PAGE_STATUS_CLEAN" failed: file "../../../../uvm/uvm_fault.c", line 1754
on powerpc/ibm4xx. It is triggered by this sample code:
http://www.netbsd.org/~rin/pr54945.c
This is taken from configure script of some 3rd party software. This
mmap's temporary file onto a fixed address, where anonymous memory has
already been mapped by malloc. The KASSERT fires when reading from
mmap'ed address, if temporary file is on NFS:
# /home/rin/a.out
malloc data1
malloc data2
data2: 0xfdc04000 --> 0xfdc04000
mmap to data2
read from data2
[ 25.3799285] panic: kernel diagnostic assertion "uobj == NULL || !UVM_OBJ_IS_CLEAN(uobjpage->uobject) || uvm_pagegetdirty(uobjpage) == UVM_PAGE_STATUS_CLEAN" failed: file "../../../../uvm/uvm_fault.c", line 1754
[ 25.3799285] cpu0: Begin traceback...
[ 25.3799285] 0x079afc90:
at vpanic+0x130
[ 25.6800570] 0x079afcc0: at kern_assert+0x60
[ 25.7299618] 0x079afd00: at uvm_fault_internal+0x2114
[ 25.7799536] 0x079afe70: at trap+0x560
[ 25.8399672] 0x079aff20: user DTMISS trap by 0x1800c94: srr1=0xc030
[ 25.8399672] r1=0xfffeba10 cr=0x44000848 xer=0 ctr=0xfdcba4c0 esr=0 pid=0xc
[ 25.8399672] cpu0: End traceback...
Stopped in pid 10.1 (a.out) at netbsd:vpanic+0x134: or r3, r29, r29
While this is almost reproducible on NFS, it does not occur on tmpfs nor
FFS as far as I can see. Also, panic does not occur on amd64 and armv6.
MMU of ibm4xx is different from ones of standard powerpc processors, and
therefore has its own pmap implementation. Page size is 16KB, and TLB is
completely managed by software. Modified and referenced bits are absent.
Here's full UVMHIST log when panic occurs:
http://www.netbsd.org/~rin/uvmhist_20200220.txt
I tried yamt's fixes. This is patch against -HEAD:
http://www.netbsd.org/~rin/nfs_yamt-pagecache_20200220.patch
But this does not solve the problem.
Thanks,
rin
Home |
Main Index |
Thread Index |
Old Index