Re: CVS commit: src/sys

2020-08-14 Thread Chuck Silvers
On Sat, Aug 15, 2020 at 01:20:48AM +0900, Ryo ONODERA wrote:
> Hi,
> 
> "Chuck Silvers"  writes:
> 
> > Module Name:src
> > Committed By:   chs
> > Date:   Fri Aug 14 09:06:15 UTC 2020
> >
> > Modified Files:
> > src/sys/miscfs/genfs: genfs_io.c
> > src/sys/uvm: uvm_extern.h uvm_object.c uvm_object.h uvm_page.c
> > uvm_page_status.c uvm_pager.c uvm_vnode.c
> >
> > Log Message:
> > centralize calls from UVM to radixtree into a few functions.
> > in those functions, assert that the object lock is held in
> > the correct mode.
> >
> >
> > To generate a diff of this commit:
> > cvs rdiff -u -r1.99 -r1.100 src/sys/miscfs/genfs/genfs_io.c
> > cvs rdiff -u -r1.230 -r1.231 src/sys/uvm/uvm_extern.h
> > cvs rdiff -u -r1.23 -r1.24 src/sys/uvm/uvm_object.c
> > cvs rdiff -u -r1.38 -r1.39 src/sys/uvm/uvm_object.h
> > cvs rdiff -u -r1.244 -r1.245 src/sys/uvm/uvm_page.c
> > cvs rdiff -u -r1.5 -r1.6 src/sys/uvm/uvm_page_status.c
> > cvs rdiff -u -r1.128 -r1.129 src/sys/uvm/uvm_pager.c
> > cvs rdiff -u -r1.115 -r1.116 src/sys/uvm/uvm_vnode.c
> 
> This change assets after every shutdown or sync command
> invocation on my two amd64 laptops at least.
> Both laptop uses mount -o log (WAPBL).
> 
> The backtrace is as follows.
> This is result of LOCKDEBUG enabled kernel.
> I can get same result from DIAGNOSTICS kernel too.
> Could you take a look at my problem?
> 
> $ crash -N netbsd.33 -M netbsd.33.core
> Crash version 9.99.70, image version 9.99.70.
> System panicked: kernel diagnostic assertion "uvm_pagelookup(uobj, offset) == 
> NULL || ((a->ar_flags & UVM_PAGE_ARRAY_FILL_DIRTY) != 0 && 
> !uvm_obj_page_dirty_p(pg))" failed: file "/usr/src/sys/uvm/uvm_vnode.c", line 
> 321
> Backtrace from time of crash is available.
> crash> bt
> _KERNEL_OPT_NARCNET() at 0
> ?() at 87814aa72cb0
> sys_reboot() at sys_reboot
> vpanic() at vpanic+0x15b
> __x86_indirect_thunk_rax() at __x86_indirect_thunk_rax
> uvn_findpage() at uvn_findpage+0xf9
> uvn_findpages() at uvn_findpages+0xcd
> genfs_do_putpages() at genfs_do_putpages+0xc17
> VOP_PUTPAGES() at VOP_PUTPAGES+0x43
> ffs_full_fsync() at ffs_full_fsync+0x1b4
> ffs_fsync() at ffs_fsync+0xef
> VOP_FSYNC() at VOP_FSYNC+0x47
> sched_sync() at sched_sync+0x168
> crash>
> 
> Thank you.
> 
> -- 
> Ryo ONODERA // r...@tetera.org
> PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3

Hi Ryo,

yea, quite a few people are seeing this problem. I can't reproduce it on amd64 
or arm32,
but I tried i386 just now and it does happen for me there.
now that I have a way to reproduce, hopefully I can fix it quickly.

-Chuck


Re: CVS commit: src/sys

2020-08-14 Thread Ryo ONODERA
Hi,

"Chuck Silvers"  writes:

> Module Name:  src
> Committed By: chs
> Date: Fri Aug 14 09:06:15 UTC 2020
>
> Modified Files:
>   src/sys/miscfs/genfs: genfs_io.c
>   src/sys/uvm: uvm_extern.h uvm_object.c uvm_object.h uvm_page.c
>   uvm_page_status.c uvm_pager.c uvm_vnode.c
>
> Log Message:
> centralize calls from UVM to radixtree into a few functions.
> in those functions, assert that the object lock is held in
> the correct mode.
>
>
> To generate a diff of this commit:
> cvs rdiff -u -r1.99 -r1.100 src/sys/miscfs/genfs/genfs_io.c
> cvs rdiff -u -r1.230 -r1.231 src/sys/uvm/uvm_extern.h
> cvs rdiff -u -r1.23 -r1.24 src/sys/uvm/uvm_object.c
> cvs rdiff -u -r1.38 -r1.39 src/sys/uvm/uvm_object.h
> cvs rdiff -u -r1.244 -r1.245 src/sys/uvm/uvm_page.c
> cvs rdiff -u -r1.5 -r1.6 src/sys/uvm/uvm_page_status.c
> cvs rdiff -u -r1.128 -r1.129 src/sys/uvm/uvm_pager.c
> cvs rdiff -u -r1.115 -r1.116 src/sys/uvm/uvm_vnode.c

This change assets after every shutdown or sync command
invocation on my two amd64 laptops at least.
Both laptop uses mount -o log (WAPBL).

The backtrace is as follows.
This is result of LOCKDEBUG enabled kernel.
I can get same result from DIAGNOSTICS kernel too.
Could you take a look at my problem?

$ crash -N netbsd.33 -M netbsd.33.core
Crash version 9.99.70, image version 9.99.70.
System panicked: kernel diagnostic assertion "uvm_pagelookup(uobj, offset) == 
NULL || ((a->ar_flags & UVM_PAGE_ARRAY_FILL_DIRTY) != 0 && 
!uvm_obj_page_dirty_p(pg))" failed: file "/usr/src/sys/uvm/uvm_vnode.c", line 
321
Backtrace from time of crash is available.
crash> bt
_KERNEL_OPT_NARCNET() at 0
?() at 87814aa72cb0
sys_reboot() at sys_reboot
vpanic() at vpanic+0x15b
__x86_indirect_thunk_rax() at __x86_indirect_thunk_rax
uvn_findpage() at uvn_findpage+0xf9
uvn_findpages() at uvn_findpages+0xcd
genfs_do_putpages() at genfs_do_putpages+0xc17
VOP_PUTPAGES() at VOP_PUTPAGES+0x43
ffs_full_fsync() at ffs_full_fsync+0x1b4
ffs_fsync() at ffs_fsync+0xef
VOP_FSYNC() at VOP_FSYNC+0x47
sched_sync() at sched_sync+0x168
crash>

Thank you.

-- 
Ryo ONODERA // r...@tetera.org
PGP fingerprint = 82A2 DC91 76E0 A10A 8ABB  FD1B F404 27FA C7D1 15F3