Bug #877

panic: vm_page_cache: caching a dirty page

Added by pavalos about 7 years ago. Updated about 7 years ago.

Status:ClosedStart date:
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:-
Target version:-

Description

panic: vm_page_cache: caching a dirty page, pindex: 22
mp_lock = 00000000; cpuid = 0
boot() called on cpu#0
Uptime: 11d2h43m2s

(kgdb) bt
#0 dumpsys () at thread.h:83
#1 0xc019ce51 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:372
#2 0xc019d16e in panic (fmt=Variable "fmt" is not available.
) at /usr/src/sys/kern/kern_shutdown.c:797
#3 0xc029d6cf in vm_page_cache (m=0xc29f91d8) at /usr/src/sys/vm/vm_page.c:1244
#4 0xc0291b22 in vm_fault_object (fs=0xef108c60, first_pindex=23, fault_type=2 '\002') at /usr/src/sys/vm/vm_fault.c:1093
#5 0xc0292cdc in vm_fault (map=0xd3563150, vaddr=713383936, fault_type=2 '\002', fault_flags=8) at /usr/src/sys/vm/vm_fault.c:360
#6 0xc02e7510 in trap_pfault (frame=0xef108d40, usermode=1, eva=713383936) at /usr/src/sys/platform/pc32/i386/trap.c:976
#7 0xc02e7a8b in trap (frame=0xef108d40) at /usr/src/sys/platform/pc32/i386/trap.c:566
#8 0xc02d3c56 in calltrap () at /usr/src/sys/platform/pc32/i386/exception.s:783
#9 0x082e50ed in ?? ()
#10 0xbefd739c in ?? ()
#11 0x0000002f in ?? ()
#12 0x00000000 in ?? ()
#13 0x00000000 in ?? ()
#14 0x00000000 in ?? ()
#15 0x00000000 in ?? ()
#16 0x76241000 in ?? ()
#17 0xebb59f00 in ?? ()
#18 0xff800000 in ?? ()
#19 0xef108cb8 in ?? ()
#20 0xef108c78 in ?? ()
#21 0xeb1bb100 in ?? ()
#22 0xc01a5342 in lwkt_switch () at /usr/src/sys/kern/lwkt_thread.c:752
Previous frame inner to this frame (corrupt stack?)

uname -a:
DragonFly ylem.theshell.com 1.11.0-DEVELOPMENT DragonFly 1.11.0-DEVELOPMENT #7: Sun Nov 25 10:51:23 EST 2007 :/usr/obj/usr/src/sys/YLEM i386

The sources are -HEAD from Nov. 25. Applicable files being uploaded to
leaf:~pavalos/crash/8/

Any ideas?

--Peter

History

#1 Updated by dillon about 7 years ago

:panic: vm_page_cache: caching a dirty page, pindex: 22
:mp_lock = 00000000; cpuid = 0
:boot() called on cpu#0
:Uptime: 11d2h43m2s
:
:(kgdb) bt
:#3 0xc029d6cf in vm_page_cache (m=0xc29f91d8) at /usr/src/sys/vm/vm_page.c:1244
:#4 0xc0291b22 in vm_fault_object (fs=0xef108c60, first_pindex=23, fault_type=2 '\002') at /usr/src/sys/vm/vm_fault.c:1093
:#5 0xc0292cdc in vm_fault (map=0xd3563150, vaddr=713383936, fault_type=2 '\002', fault_flags=8) at /usr/src/sys/vm/vm_fault.c:360

Wow. That's a really tiny window of opportunity. vm_fault_object()
is testing whether the page is dirty but it is still possible for
the page to become dirty on a SMP system between that test and the
call to vm_page_cache() due to a process running in user mode on
a different cpu.

I will put a second test in after the vm_page_protect() call in
vm_page_cache().

-Matt

Also available in: Atom PDF