⬢ DragonFlyBSD Kernel Audit
DF-3554 / wedge_forensics.txt
← back to finding ↓ download raw
# QEMU-monitor forensics of the wedged guest (stock v1 run)
#
# CPU states (info registers, repeated):
#   spinner vCPU: RIP cycling among
#     m_free+0x1c / m_free+0x3c / m_free+0x5c   (sys/kern mbuf free)
#     m_tag_copy_chain+0x20, m_dup_pkthdr+0x0   (m_dup internals)
#     netgraph.ko+0x22c6                        (ng_send_data)
#     ng_tee.ko+0x2e1                           (ngt_rcvdata)
#     RFL.IF=0 in the siocngetc terminal state (interrupts masked)
#   other vCPUs: cpu_idle+0xda (HLT) / cpu_smp_stopped+0x52
#
# Terminal states across the 4 runs (all unrecoverable):
#   1) siocngetc+0x41, IF=0, ~94% host-core spin; Xcpustop+0x20e frames
#      on other CPUs  -> kernel debugger entry polling a dead console
#   2) all CPUs cpu_idle, network catatonic (ssh/ICMP dead)
#   3) CPU0 memmove+0xb0 + CPU1 acpi_hpet_early_get_timecount+0x38
#      (DELAY), others idle -> cross-CPU deadlock
#
# Stack walk of the wedging thread (monitor 'x' virtual dump of its
# kstack around RSP=0xfffff8008d1f8888; symbolized with the guest's own
# nm output of /boot/kernel/{kernel,netgraph.ko,ng_tee.ko,ng_socket.ko}):
#
#   fffff8008d1f8998:  m_free+0x1ce / m_freem+0x15     per-hop churn
#   fffff8008d1f89c8:  netgraph.ko+0x22f0              ng_send_data
#   fffff8008d1f89e8:  ng_tee.ko+0x405                 ngt_rcvdata
#   fffff8008d1f89f8:  netgraph.ko+0x2277              ng_send_data
#   fffff8008d1f8a38:  ng_socket.ko+0x34f              ngd_send
#   fffff8008d1f8a40:  0xfffff80000706174 = "tap\0"    injection sockaddr
#
# -> the sendto -> ngd_send -> ng_send_data -> ngt_rcvdata ->
#    ng_send_data -> m_dup/m_free v1 tee forwarding chain, live.