[Bug 292494] powerpc64: booting qemu + mac99 results in crash (kernel DSI write trap) after panic: witness_save: witness_cold
[email protected] Sun, 18 Jan 2026 05:51:35 +0000
| Newsgroups | gmane.os.freebsd.devel.ppc |
|---|---|
| Message-ID | <[email protected]/bugzilla/> |
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292494 --- Comment #3 from Adrian Chadd <[email protected]> --- wait a sec, ofwcall is generating a trap that's generating a panic in the witness code. Here's what happens when I set a breakpoint on powerpc_interrupt: ``` Breakpoint 1.2, powerpc_interrupt (framep=0xfffffcf0) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/powerpc/powerpc/interrupt.c:90 90 switch (framep->exc) { (kgdb) bt #0 powerpc_interrupt (framep=0xfffffcf0) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/powerpc/powerpc/interrupt.c:90 #1 <signal handler called> #2 0x00000000fff0267c in ?? () #3 0x0000000000e4b454 in ofwcall () at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/powerpc/ofw/ofwcall64.S:166 ``` Then I step through it until I hit another interrupt, it takes a nice trip through the VM code: ``` #0 powerpc_interrupt (framep=0xffffebe0) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/powerpc/powerpc/interrupt.c:90 #1 <signal handler called> #2 db_backtrace (td=<optimized out>, fp=<optimized out>, count=<optimized out>) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/powerpc/powerpc/db_trace.c:187 #3 0xc00000000021d984 in db_trace_self_wrapper () at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/ddb/db_main.c:284 #4 0xc0000000008fbe98 in kdb_backtrace () at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/kern/subr_kdb.c:444 #5 0xc000000000893058 in vpanic (fmt=0xc00000000165606f "%s: witness_cold", ap=<optimized out>) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/kern/kern_shutdown.c:959 #6 0xc000000000892e94 in panic (fmt=<optimized out>) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/kern/kern_shutdown.c:887 #7 0xc0000000009338ac in witness_save (lock=<optimized out>, filep=<optimized out>, linep=<optimized out>) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/kern/subr_witness.c:2365 #8 0xc0000000008a16cc in _sx_slock_hard (sx=0xc000000001be0828, opts=<optimized out>, x=0, file=<optimized out>, line=<optimized out>) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/kern/kern_sx.c:1085 #9 0xc0000000008a11a8 in _sx_slock_int (sx=0xc000000001be0828, opts=0, file=0xc000000001689d4a "/home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/vm/vm_map.c", line=5021) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/kern/kern_sx.c:1279 #10 0xc0000000008a1a74 in _sx_slock (sx=<optimized out>, opts=<optimized out>, file=<optimized out>, line=<optimized out>) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/kern/kern_sx.c:1295 #11 0xc000000000d71340 in _vm_map_lock_read (map=0xc000000001be07c8, line=5021, file=<optimized out>) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/vm/vm_map.c:682 #12 vm_map_lookup (var_map=0xfffff8a0, vaddr=0, fault_typea=2 '\002', out_entry=0xfffff8a8, object=0xfffff888, pindex=0xfffff890, out_prot=0xfffff831 "", wired=0xfffff838) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/vm/vm_map.c:5021 #13 0xc000000000d5d8e8 in vm_fault_lookup (fs=<optimized out>) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/vm/vm_fault.c:928 #14 vm_fault (map=<optimized out>, vaddr=<optimized out>, fault_type=2 '\002', fault_flags=<optimized out>, m_hold=<optimized out>) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/vm/vm_fault.c:1706 #15 0xc000000000d5d564 in vm_fault_trap (map=<optimized out>, vaddr=<optimized out>, fault_type=<optimized out>, fault_flags=<optimized out>, signo=0x0, ucode=0x0) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/vm/vm_fault.c:739 #16 0xc000000000e83c90 in trap_pfault (frame=0xfffffcf0, user=false, signo=0x0, ucode=0x0) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/powerpc/powerpc/trap.c:834 #17 0xc000000000e8322c in trap (frame=0xfffffcf0) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/powerpc/powerpc/trap.c:484 #18 0xc000000000e7785c in powerpc_interrupt (framep=0xfffffcf0) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/powerpc/powerpc/interrupt.c:137 #19 <signal handler called> #20 0x00000000fff0267c in ?? () #21 0x0000000000e4b454 in ofwcall () at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/powerpc/ofw/ofwcall64.S:166 Backtrace stopped: previous frame inner to this frame (corrupt stack?) (kgdb) frame 7 #7 0xc0000000009338ac in witness_save (lock=<optimized out>, filep=<optimized out>, linep=<optimized out>) at /home/adrian/work/freebsd/head/freebsd-src-ppc64/sys/kern/subr_witness.c:2365 2365 KASSERT(witness_cold == 0, ("%s: witness_cold", __func__)); (kgdb) print witness_cold $2 = 1 (kgdb) ``` So is this a case of witness not yet being available? like, did vm_page_startup() not yet get called but we're already taking a page fault? -- You are receiving this mail because: You are the assignee for the bug.