Subject: kern/29521: Frequent faults in uvm_pagelookup
To: None <,,>
From: None <>
List: netbsd-bugs
Date: 02/24/2005 13:26:00
>Number:         29521
>Category:       kern
>Synopsis:       Frequent faults in uvm_pagelookup
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Feb 24 13:26:00 +0000 2005
>Originator:     Quentin Garnier
>Release:        NetBSD 2.99.14
System: NetBSD storo.eve 2.99.14 NetBSD 2.99.14 (STORO) #1: Mon Jan 17 12:21:45 CET 2005 qgarnier@storo.eve:/home/src/current/obj/home/src/current/src/sys/arch/i386/compile/STORO i386
Architecture: i386
Machine: i386
	I frequently get fatal page faults in uvm_pagelookup().  The back trace
	is not always the same, but it usually get through genfs_getpages().

	I have a few dumps in case someone can work out some magic out of them.

	First I used NetBSD 2.0 on that host, but it was too painful, so I
	switched to a slightly better -current, as shown in the env field.  NFS
	is now a bit better, but I'm afraid I haven't won on the stability side
	after all.

	I can't hook kgdb on that host, but I'd really really like to see that
	issue solved, so I'm ready to answer any query.  But it's kind of a last
	hope thing...

	Example back trace:

#12 0xc0265ea8 in trap (frame=0xcf7fb660)
    at /home/src/current/src/sys/arch/i386/i386/trap.c:296
#13 0xc0102c97 in calltrap ()
#14 0xc0254b53 in uvn_findpage (uobj=0xd3505740, offset=2965504, 
    pgp=0xcf7fb8a4, flags=1) at /home/src/current/src/sys/uvm/uvm_vnode.c:379
#15 0xc0254ae1 in uvn_findpages (uobj=0xd3505740, offset=2949120, 
    npagesp=0xcf7fb820, pgs=0xcf7fb894, flags=1)
    at /home/src/current/src/sys/uvm/uvm_vnode.c:348
#16 0xc0223684 in genfs_getpages (v=0xcf7fba04)
    at /home/src/current/src/sys/miscfs/genfs/genfs_vnops.c:579
#17 0xc0224159 in genfs_getpages (v=0xcf7fbad4)
    at /home/src/current/src/sys/sys/vnode_if.h:1923
#18 0xc0254a04 in uvn_get (uobj=0xd3505740, offset=2879488, pps=0xc2a06b50, 
    npagesp=0xcf7fbb58, centeridx=0, access_type=1, advice=0, flags=2)
    at /home/src/current/src/sys/sys/vnode_if.h:1923
#19 0xc0245daa in uvm_loanuobjpages (uobj=0xd3505740, pgoff=2879488, 
    orignpages=1, origpgpp=0xc2a06b50)
    at /home/src/current/src/sys/uvm/uvm_loan.c:552
#20 0xc015b05e in nfsrv_read (nfsd=0xcf835510, slp=0xc23a9400, 
    procp=0xcdedbe60, mrq=0xcf7fbdc8)
    at /home/src/current/src/sys/nfs/nfs_serv.c:686

	As usual, the actual frame where the fault happens is shadowed by
	calltrap(), but line 379 of uvm_vnode.c is a call to uvm_pagelookup().
	Use NetBSD for a busy NFS server.