Page fault in amd64 pmap_qremove from vm_thread_new()
Kostik Belousov
kostikbel at gmail.com
Tue Feb 13 19:23:55 UTC 2007
On Tue, Feb 13, 2007 at 01:53:12PM -0500, Kris Kennaway wrote:
> I get this frequently when running stress2 on an 8-core amd64 system:
>
> Fatal trap 12: page fault while in kernel mode
> Fatal trap 12: page fault while in kernel mode
>
>
> cpuid = 2;
>
>
> apic id = 02
>
> Fatal trap 12: page fault while in kernel mode
>
> cpuid = 5; fault virtual address = 0xffff807ffffff040
> Fatal trap 12: page fault while in kernel mode
> Fatal trap 12: page fault while in kernel mode
>
> cpuid = 4; apic id = 05
> apic id = 04
> fault virtual address = 0xffff807ffffff0e0
> fault virtual address = 0xffff807ffffff0b8
> cpuid = 0; fault code = supervisor write data, page not present
>
> instruction pointer = 0x8:0xffffffff803deedd
> cpuid = 3; stack pointer = 0x10:0xffffffffc7647720
> fault code = supervisor write data, page not present
>
> instruction pointer = 0x8:0xffffffff803deedd
> apic id = 00
> stack pointer = 0x10:0xffffffffcfd7e720
> fault code = supervisor write data, page not present
> frame pointer = 0x10:0xffffffffc7647730
> frame pointer = 0x10:0xffffffffcfd7e730
> Fatal trap 12: page fault while in kernel mode
>
> cpuid = 6;
> instruction pointer = 0x8:0xffffffff803deedd
>
> stack pointer = 0x10:0xffffffffb2b93720
>
> frame pointer = 0x10:0xffffffffb2b93730
>
> code segment = base 0x0, limit 0xfffff, type 0x1b
>
> = DPL 0, pres 1, long 1, def32 0, gran 1
>
> processor eflags =
> interrupt enabled,
> resume, Fatal trap 12: page fault while in kernel mode
> apic id = 06
> cpuid = 7; fault virtual address = 0xffff807ffffff108
> apic id = 07
> fault code = supervisor write data, page not present
> code segment = base 0x0, limit 0xfffff, type 0x1b
> apic id = 03
> = DPL 0, pres 1, long 1, def32 0, gran 1
> fault virtual address = 0xffff807ffffff068
> IOPL = 0
> fault code = supervisor write data, page not present
> fault virtual address = 0xffff807ffffff018
> instruction pointer = 0x8:0xffffffff803deedd
> instruction pointer = 0x8:0xffffffff803deedd
> Fatal trap 12: page fault while in kernel mode
> stack pointer = 0x10:0xffffffffbf901720
> cpuid = 4; stack pointer = 0x10:0xffffffffb1c11720
> processor eflags = frame pointer = 0x10:0xffffffffb1c11730
> interrupt enabled, resume, fault code = supervisor write data, page not present
> IOPL = 0
> instruction pointer = 0x8:0xffffffff803deedd
> current process = stack pointer = 0x10:0xffffffffd5b25720
> frame pointer = 0x10:0xffffffffbf901730
> frame pointer = 0x10:0xffffffffd5b25730
> code segment = base 0x0, limit 0xfffff, type 0x1b
> current process = = DPL 0, pres 1, long 1, def32 0, gran 1
> code segment = base 0x0, limit 0xfffff, type 0x1b
> code segment = base 0x0, limit 0xfffff, type 0x1b
> 18747 (thr2)
> [thread pid 18747 tid 142909 ]
> Stopped at pmap_qremove+0x2d: movq $0,(%rcx,%rax,8)
> db> wh
> Tracing pid 18747 tid 142909 td 0xffffff0095710cd0
> pmap_qremove() at pmap_qremove+0x2d
> vm_thread_new() at vm_thread_new+0x8d
> thread_init() at thread_init+0x16
> slab_zalloc() at slab_zalloc+0x282
> uma_zone_slab() at uma_zone_slab+0x1ae
> uma_zalloc_bucket() at uma_zalloc_bucket+0x19d
> uma_zalloc_arg() at uma_zalloc_arg+0x3a3
> thread_alloc() at thread_alloc+0x1f
> create_thread() at create_thread+0xc5
> kern_thr_new() at kern_thr_new+0x75
> thr_new() at thr_new+0x62
> syscall() at syscall+0x310
> Xfast_syscall() at Xfast_syscall+0xab
> --- syscall (455, FreeBSD ELF64, thr_new), rip = 0x8007a1cac, rsp = 0x7fffffffdef8, rbp = 0 ---
> db> show allpcpu
> Current CPU: 2
>
> cpuid = 0
> curthread = 0xffffff00717e8290: pid 18944 "thr2"
> curpcb = 0xffffffffe2e33d50
> fpcurthread = none
> idlethread = 0xffffff00b9aa6520: pid 17 "idle: cpu0"
> spin locks held:
>
> cpuid = 1
> curthread = 0xffffff0015e9d7b0: pid 18736 "thr2"
> curpcb = 0xffffffffbceefd50
> fpcurthread = none
> idlethread = 0xffffff00b9aa6290: pid 16 "idle: cpu1"
> spin locks held:
> exclusive spin mutex sio r = 0 (0xffffffff806bf3c0) locked @ dev/sio/sio.c:1390
>
> cpuid = 2
> curthread = 0xffffff0095710cd0: pid 18747 "thr2"
> curpcb = 0xffffffffcfd7ed50
> fpcurthread = none
> idlethread = 0xffffff00b9aa6000: pid 15 "idle: cpu2"
> spin locks held:
>
> cpuid = 3
> curthread = 0xffffff00ad485290: pid 18743 "thr2"
> curpcb = 0xffffffffd5b25d50
> fpcurthread = none
> idlethread = 0xffffff00b9a63cd0: pid 14 "idle: cpu3"
> spin locks held:
>
> cpuid = 4
> curthread = 0xffffff0098fc7000: pid 18942 "thr2"
> curpcb = 0xffffffffc77fad50
> fpcurthread = none
> idlethread = 0xffffff00b9a63000: pid 13 "idle: cpu4"
> spin locks held:
> exclusive spin mutex turnstile chain r = 0 (0xffffffff80613ed8) locked @ kern/subr_turnstile.c:489
>
> cpuid = 5
> curthread = 0xffffff00215b8cd0: pid 18708 "thr2"
> curpcb = 0xffffffffb2b93d50
> fpcurthread = none
> idlethread = 0xffffff00b9a8fcd0: pid 12 "idle: cpu5"
> spin locks held:
>
> cpuid = 6
> curthread = 0xffffff005b72d520: pid 18718 "thr2"
> curpcb = 0xffffffffb1c11d50
> fpcurthread = none
> idlethread = 0xffffff00b9a8fa40: pid 11 "idle: cpu6"
> spin locks held:
>
> cpuid = 7
> curthread = 0xffffff0078aae7b0: pid 18782 "thr2"
> curpcb = 0xffffffffbf901d50
> fpcurthread = none
> idlethread = 0xffffff00b9a8f7b0: pid 10 "idle: cpu7"
> spin locks held:
>
> For some reason ddb doesn't give sensible backtraces for the running threads:
>
> db> wh 18944
> Tracing pid 18944 tid 130433 td 0xffffff009daa7290
> fork_trampoline() at fork_trampoline
> db> wh 18736
> Tracing pid 18736 tid 165977 td 0xffffff00632b2cd0
> fork_trampoline() at fork_trampoline
> db> wh 18747
> Tracing pid 18747 tid 165890 td 0xffffff0037403000
> fork_trampoline() at fork_trampoline
> db> wh 18743
> Tracing pid 18743 tid 165929 td 0xffffff004f59e000
> fork_trampoline() at fork_trampoline
> db> wh 18942
> Tracing pid 18942 tid 130531 td 0xffffff000a166520
> fork_trampoline() at fork_trampoline
> db> wh 18708
> Tracing pid 18708 tid 166269 td 0xffffff005c28a290
> fork_trampoline() at fork_trampoline
> db> wh 18718
> Tracing pid 18718 tid 111088 td 0xffffff0081f51a40
> fork_trampoline() at fork_trampoline
> db> wh 18782
> Tracing pid 18782 tid 166078 td 0xffffff0052b4c000
> fork_trampoline() at fork_trampoline
Is the backtrace for faulted thread always the same ? And this is CURRENT ?
I'm starring at similar (looks random) corruption on amd64 6.2-RELEASE.
Machine already produced >2 core dumps.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-amd64/attachments/20070213/a1c0f08f/attachment.pgp
More information about the freebsd-amd64
mailing list