Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Aug 2004 16:33:42 -0500 (CDT)
From:      Sean Farley <sean-freebsd@farley.org>
To:        freebsd-hackers@freebsd.org
Subject:   vm_page_remove() panic
Message-ID:  <20040824163214.G15868@thor.farley.org>

next in thread | raw e-mail | index | archive | help
This e-mail was previously posted on freebsd-stable.

I recently received a panic in vm_page_remove() which got me looking for
similar panics in the past for other people.  From this search, I came
across a change that was made to fix a similar problem and was quickly
reverted afterwards.

My system experienced panics in the past, but I may or may not have
fixed it.  More recently my system has been freezing providing no clue
for the reason.  Fortunately, I was on the console when it died as
opposed to within X, although X was running with some applications.  I
believe this allowed the kernel to at least fall into DDB.

Fix:
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/i386/i386/pmap.c.diff?r1=1.250.2.19&r2=1.250.2.20&only_with_tag=RELENG_4&f=h

Regression?:
http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/i386/i386/pmap.c.diff?r1=1.250.2.20&r2=1.250.2.21&only_with_tag=RELENG_4&f=h

Mention of patch to remove the change:
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&selm=bilo8r%241vbn%241%40FreeBSD.csie.NCTU.edu.tw&rnum=14

Panic (function trace) as scribbled from DDB:
vm_page_remove
vm_page_free_toq
vm_page_alloc
vm_hold_load_pages
allocbuf
geteblk
bwrite
vop_stdbwrite
vop_defaultop
spec_vnoperate
ufs_vnoperatespec
bawrite
softdep_fsync_mountdev
ffs_fsync
sched_sync
fork_trampoline

Uname:
FreeBSD thor.farley.org 4.10-STABLE FreeBSD 4.10-STABLE #2: Tue Aug  3
17:37:38 CDT 2004 root@thor.farley.org:/usr/obj/usr/src/sys/THOR i386

Kernel message some time (longer than several minutes but unknown):
Aug 21 18:46:36 thor /kernel: handle_workitem_freeblocks: block count

While RELENG_4 and RELENG_5 are fairly close in that section of code,
RELENG_5 has the assignment of pte within the for-loop, uses
pmap_pte_quick() instead of pmap_pte() and performs a slightly different
check against pte.

memtest86 has been run on this system for longer than a day without any
problems.

Does anyone know if it was reverted back on purpose?  Should it be more
similar to RELENG_5.  I am fairly good at C; I just do not know the
kernel all that well.  :)

Sean
-----------------------
sean-freebsd@farley.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040824163214.G15868>