NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: PR/55702 CVS commit: src/sys



The following reply was made to PR kern/55702; it has been noted by GNATS.

From: Rin Okuyama <rokuyama.rk%gmail.com@localhost>
To: Chuck Silvers <chuq%chuq.com@localhost>
Cc: gnats-bugs%netbsd.org@localhost
Subject: Re: PR/55702 CVS commit: src/sys
Date: Sat, 24 Oct 2020 21:17:40 +0900

 On 2020/10/19 3:25, Chuck Silvers wrote:
 ...
 >   Module Name:	src
 >   Committed By:	chs
 >   Date:		Sun Oct 18 18:22:29 UTC 2020
 >   
 >   Modified Files:
 >   	src/sys/rump/librump/rumpvfs: vm_vfs.c
 >   	src/sys/uvm: uvm_page.c uvm_pager.c
 >   
 >   Log Message:
 >   Move the handling of PG_PAGEOUT from uvm_aio_aiodone_pages() to
 >   uvm_page_unbusy() so that all callers of uvm_page_unbusy() don't need to
 >   handle this flag separately.  Split out the pages part of uvm_aio_aiodone()
 >   into uvm_aio_aiodone_pages() in rump just like in the real kernel.
 >   In ZFS functions that can fail to copy data between the ARC and VM pages,
 >   use uvm_aio_aiodone_pages() rather than uvm_page_unbusy() so that we can
 >   handle these "I/O" errors.  Fixes PR 55702.
 >   
 >   
 >   To generate a diff of this commit:
 >   cvs rdiff -u -r1.38 -r1.39 src/sys/rump/librump/rumpvfs/vm_vfs.c
 >   cvs rdiff -u -r1.247 -r1.248 src/sys/uvm/uvm_page.c
 >   cvs rdiff -u -r1.129 -r1.130 src/sys/uvm/uvm_pager.c
 >   
 >   Please note that diffs are not public domain; they are subject to the
 >   copyright notices on the relevant files.
 
 Hi,
 
 Recent -current on aarch64 easily hits KASSERT as:
 
 	panic: kernel diagnostic assertion "(pg->flags & PG_PAGEOUT) == 0" failed: file "../../../../uvm/uvm_page.c", line 1448
 
 Full backtrace is attached below.
 
 I carried out bisectioning to find this commit; By reverting this for
 sys/uvm/*, -current works without problems as far as I can see.
 
 Chuck, can you please take a look?
 
 Thanks,
 rin
 ----
 panic: kernel diagnostic assertion "(pg->flags & PG_PAGEOUT) == 0" failed: file "../../../../uvm/uvm_page.c", line 1448
 cpu0: Begin traceback...
 trace fp ffffc00031ea78c0
 fp ffffc00031ea78f0 vpanic() at ffffc000004f4e0c netbsd:vpanic+0x14c
 fp ffffc00031ea7950 kern_assert() at ffffc00000819cdc netbsd:kern_assert+0x5c
 fp ffffc00031ea79e0 uvm_pagefree() at ffffc0000046c328 netbsd:uvm_pagefree+0x4a8
 fp ffffc00031ea7a10 uvm_anon_release() at ffffc00000454588 netbsd:uvm_anon_release+0x58
 fp ffffc00031ea7a30 uvm_aio_aiodone_pages() at ffffc0000046ef00 netbsd:uvm_aio_aiodone_pages+0x410
 fp ffffc00031ea7ac0 uvm_aio_aiodone() at ffffc0000046f22c netbsd:uvm_aio_aiodone+0xac
 fp ffffc00031ea7bb0 scsipi_complete() at ffffc0000010a120 netbsd:scsipi_complete+0x120
 fp ffffc00031ea7c00 scsipi_done() at ffffc0000010b174 netbsd:scsipi_done+0xe4
 fp ffffc00031ea7c40 usb_transfer_complete() at ffffc0000011d638 netbsd:usb_transfer_complete+0x1f8
 fp ffffc00031ea7c80 dwc2_softintr() at ffffc000003aa758 netbsd:dwc2_softintr+0x148
 fp ffffc00031ea7ce0 usb_soft_intr() at ffffc000001196cc netbsd:usb_soft_intr+0x24
 fp ffffc00031ea7d40 softint_dispatch() at ffffc000004c21c8 netbsd:softint_dispatch+0xe0
 fp ffffc00043c9fe80 cpu_switchto_softint() at ffffc0000009c650 netbsd:cpu_switchto_softint+0x6c
 tf ffffc00043c9fed0 el0_trap() at ffffc000000a2ff0 netbsd:el0_trap
 ---- trapframe 0xffffc00043c9fed0 (304 bytes) ----
      pc=000000000b89376c,   spsr=0000000080000010 (AArch32)
     esr=0000000092000047,    far=00000000ea013000
      r0=00000000f4d5b000,     r1=00000000f4a70708
      r2=0000000000000042,     r3=000000000000006c
      r4=0000000000000043,     r5=00000000f4a7074a
      r6=0000000000000001,     r7=000000004443fb80
      r8=0000000000000000,     r9=00000000eca43bb8
     r10=0000000000000007,    r11=000000000bd4552c
     r12=000000005acc8daf, sp=r13=00000000fff77b18
 lr=r14=00000000f4a70739, pc=r15=000000000b89376c
 ------------------------------------------------
 cpu0: End traceback...
 Stopped in pid 0.6 (system) at  netbsd:cpu_Debugger+0x4:        ret
 db{0}>
 


Home | Main Index | Thread Index | Old Index