DF-4623 / panic.txt
ons: blanktime.
Starting sshd.
sendmail_submit: /etc/mail/aliases.db not present, generating
sendmail_clientmqueue: /etc/mail/aliases.db not present, generating
Starting cron.
Local package initialization:.
Tue Sep 22 07:34:09 UTC 2026
DragonFly/x86_64 (dfbsd) (ttyd0)
login: [df4623] loaded (fire=0)
[df4623] no virtio_blk devclass (virtio absent)
[df4623] unloaded
module_register_init: MOD_LOAD (df4623, ffffffff82600000, 0) error 19
[df4623] loaded (fire=0)
[df4623] private vq 'df4623-probe' allocated: nentries=64 free=64 head=0 (dev=vtblk0 index 63 never registered with host)
[df4623] enqueue A: head=0 free=61 queued=1
[df4623] legit completion: dequeue -> cookie 0xaaaa0001 (want 0xaaaa0001) free=64 head=0 used_cons=1
[df4623] PROJECTION of duplicate used id=0 (production kernel):
[df4623] free_chain: vq_free_cnt += 0 (ndescs of stale head)
[df4623] dxp->ndescs underflows to 65533 after 2 NEXT hops (VQASSERT(==0) at :796 is a NO-OP without INVARIANTS)
[df4623] then desc[2].next = vq_desc_head_idx(0) -> CYCLE, head=0 while chain is idle
[df4623] next virtqueue_enqueue() walks head=0 .. and terminates at desc[2].next == 0 (the cycle) => head NEVER advances
[df4623] => every new request is handed desc 0..2 again, vq_descx[0].cookie overwritten while previous request is IN FLIGHT (completion mis-attribution)
[df4623] with F_NEXT forged on desc[2], a vq_ring_free_chain(0) walks >256/64 entries without terminating => permanent kernel spin with the driver serializer held (hard hang)
[df4623] SAFE MODE done (set hw.df4623.fire=1, kldunload, kldload again to fire the duplicate)
[df4623] vq freed; module idle
[df4623] unloaded
[df4623] loaded (fire=0)
[df4623] private vq 'df4623-probe' allocated: nentries=64 free=64 head=0 (dev=vtblk0 index 63 never registered with host)
[df4623] enqueue A: head=0 free=61 queued=1
[df4623] legit completion: dequeue -> cookie 0xaaaa0001 (want 0xaaaa0001) free=64 head=0 used_cons=1
[df4623] PROJECTION of duplicate used id=0 (production kernel):
[df4623] free_chain: vq_free_cnt += 0 (ndescs of stale head)
[df4623] dxp->ndescs underflows to 65533 after 2 NEXT hops (VQASSERT(==0) at :796 is a NO-OP without INVARIANTS)
[df4623] then desc[2].next = vq_desc_head_idx(0) -> CYCLE, head=0 while chain is idle
[df4623] next virtqueue_enqueue() walks head=0 .. and terminates at desc[2].next == 0 (the cycle) => head NEVER advances
[df4623] => every new request is handed desc 0..2 again, vq_descx[0].cookie overwritten while previous request is IN FLIGHT (completion mis-attribution)
[df4623] with F_NEXT forged on desc[2], a vq_ring_free_chain(0) walks >256/64 entries without terminating => permanent kernel spin with the driver serializer held (hard hang)
[df4623] SAFE MODE done (set hw.df4623.fire=1, kldunload, kldload again to fire the duplicate)
[df4623] vq freed; module idle
[df4623] unloaded
[df4623] loaded (fire=1)
[df4623] private vq 'df4623-probe' allocated: nentries=64 free=64 head=0 (dev=vtblk0 index 63 never registered with host)
[df4623] enqueue A: head=0 free=61 queued=1
[df4623] legit completion: dequeue -> cookie 0xaaaa0001 (want 0xaaaa0001) free=64 head=0 used_cons=1
[df4623] FIRE: forging DUPLICATE used id=0 and calling the real virtqueue_dequeue()...
panic: vq_ring_free_chain: df4623-probe - failed to free entire desc chain
cpuid = 1
Trace beginning at frame 0xfffff80117a9f728
vq_ring_free_chain() at vq_ring_free_chain+0xed 0xffffffff80a744cd
vq_ring_free_chain() at vq_ring_free_chain+0xed 0xffffffff80a744cd
virtqueue_dequeue() at virtqueue_dequeue+0x53 0xffffffff80a75273
df4623EventHandler() at df4623EventHandler+0x2a9 0xffffffff826002a9
module_register_init() at module_register_init+0x49 0xffffffff806232e9
linker_load_file.part.3() at linker_load_file.part.3+0x1b9 0xffffffff80624619
Debugger("panic")
CPU1 stopping CPUs: 0x0000003d
stopped
Stopped at Debugger+0x7c: movb $0,0xbdaf09(%rip)
db>