DF-5394 / kgdb.txt
DF-5394 โ kgdb session on crash dump #1 (run 2, /var/crash/vmcore.0, stock kernel)
===================================================================================
(gdb/kern.0/vmcore.0) bt:
#0 0xffffffff8065d664 in panic ()
#1 0xffffffff80bd5081 in trap_fatal ()
#2 0xffffffff80bd5661 in trap_pfault ()
#3 0xffffffff80bd5bcc in trap ()
#4 0xffffffff80b991fa in calltrap ()
#5 0xffffffff8068734a in _callout_cancel_or_stop ()
#6 0xffffffff80a60cdc in usb_detach () <- usb_controller.c:200
#7 0xffffffff8068e5a4 in device_detach ()
#8 0xffffffff8068e91b in device_delete_child ()
#9 0xffffffff8068ea48 in device_delete_children ()
#10 0xffffffff82605be0 in ?? () <- xhci_pci_detach (module)
usb_detach disassembly (objdump -d kern.0):
usb_detach+0x11: callq device_get_softc
usb_detach+0x16: test %rax,%rax
usb_detach+0x19: je usb_detach+0xc7 ; :195 NULL check -> early return
usb_detach+0x1f: mov %rax,%rbx ; bus
usb_detach+0x22: lea 0x490(%rax),%rdi ; &bus->power_wdog (offsetof=0x490)
usb_detach+0x37: callq callout_drain ; :200 -> _callout_cancel_or_stop
trap frame (struct trapframe @ 0xfffff8011846d5e8, dump #1;
@ 0xfffff8008e0b85e8, dump #2 โ identical):
tf_rbx = 0xfffffffffffffff8 usb_detach's `bus` (wild, non-NULL)
tf_rdi = 0x488 &bus->power_wdog = -8 + 0x490
tf_addr = 0x498 fault VA = 0x488 + 0x10
tf_err = 0x2 supervisor WRITE
tf_trapno = 0xc page fault
tf_rip = 0xffffffff8068734a _callout_cancel_or_stop+0x1a:
lock andl $0xffffefff,0x10(%rdi)
usbus device object found in dump #1 @ 0xfffff80117958500:
ivars (+0x78) = 0xfffff801188e0528 == bus (matches intrhook warning
"usb: func=0xffffffff80a60880
arg=0xfffff801188e0528")
softc (+0x80) = 0xfffff801188e0528 == bus โ the async :791
device_set_softc() had landed in the
device object the detach path is
tearing down.