NetBSD-Bugs archive

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

Re: kern/37799: Writing a large file to an NFS partition panics the kernel



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

From: Reinoud Zandijk <reinoud%NetBSD.org@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: 
Subject: Re: kern/37799: Writing a large file to an NFS partition panics the 
kernel
Date: Mon, 21 Jan 2008 19:13:46 +0100

 This PR might be related to genfs_put_pages()/uvm since another crash while 
 copying with `dd if=/dev/cd0d of=/tmp/1 bs=32' (with /tmp on NFS) on the 
 same machine; note the similarities in struct pg: pg->hashq->tqe_next = 0x40 
(!)
 
 Could this be the result of a TAILQ operation on a NULL pointer?
 
 (gdb) list
 253
 254             hash = uvm_pagehash(uobj, pg->offset);
 255             buck = &uvm.page_hash[hash];
 256             lock = uvm_hashlock(hash);
 257             mutex_spin_enter(lock);
 258             TAILQ_REMOVE(buck, pg, hashq);
 259             mutex_spin_exit(lock);
 260
 261             if (UVM_OBJ_IS_VNODE(uobj)) {
 262                     if (uobj->uo_npages == 1) {
 (gdb) print hash
 $1 = 20722
 (gdb) print buck
 $2 = (struct pglist *) 0xc9d04790
 (gdb) print lock
 $3 = (kmutex_t *) 0xc05f6f80
 (gdb) print *pg
 $4 = {pageq = {tqe_next = 0xc08f81e0, tqe_prev = 0xc05f7168}, hashq = 
{tqe_next = 0x40, 
     tqe_prev = 0xc9d04790}, listq = {tqe_next = 0xc08f81e0, tqe_prev = 
0xcafdb1c8}, uanon = 0x0, 
   uobject = 0xcafdb1c0, offset = 32710656, flags = 12, loan_count = 0, 
wire_count = 0, pqflags = 256, 
   phys_addr = 67063808, mdpage = {mp_pp = {pp_lock = {u = {mtxa_owner = 
1281}}, pp_u = {u_pte = {
           pte_ptp = 0x0, pte_va = 0}, u_head = {pvh_list = {lh_first = 0x0}}, 
u_link = 0x0}, 
       pp_flags = 0 '\0', pp_attrs = 0 '\0'}}}
 (gdb) print *buck
 $5 = {tqh_first = 0xc08f85dc, tqh_last = 0xc08f85e4}
 (gdb) where
 #0  0xc03473a0 in uvm_pageremove (pg=0xc08f85dc) at 
../../../../uvm/uvm_page.c:258
 #1  0xc03478fb in uvm_pagefree (pg=0xc08f85dc) at 
../../../../uvm/uvm_page.c:1392
 #2  0xc0427940 in genfs_do_putpages (vp=0xcafdb1c0, startoff=32710656, 
endoff=32714752, origflags=9, 
     busypg=0x0) at ../../../../miscfs/genfs/genfs_io.c:1071
 #3  0xc0426b2a in genfs_putpages (v=0xcadb9bb8) at 
../../../../miscfs/genfs/genfs_io.c:744
 #4  0xc042382f in VOP_PUTPAGES (vp=0xcafdb1c0, offlo=32710656, offhi=32714752, 
flags=9)
     at ../../../../kern/vnode_if.c:1798
 #5  0xc034ec2b in uvn_put (uobj=0xcafdb1c0, offlo=32710656, offhi=32714752, 
flags=9)
     at ../../../../uvm/uvm_vnode.c:152
 #6  0xc034a09a in uvmpd_scan_queue () at ../../../../uvm/uvm_pdaemon.c:774
 #7  0xc034a43b in uvmpd_scan () at ../../../../uvm/uvm_pdaemon.c:965
 #8  0xc0349667 in uvm_pageout (arg=0xc9d3a5e0) at 
../../../../uvm/uvm_pdaemon.c:297
 #9  0xc01002cf in lwp_trampoline ()
 (gdb) 
 



Home | Main Index | Thread Index | Old Index