โฌข DragonFlyBSD Kernel Audit
DF-5394 / kgdb.txt
โ† back to finding โ†“ download raw
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.