DF-5533 / run.patched.log
# DF-5533 — fix validation on patched kernel (fix v2 = final diff in this pack) # Patched kernel: DragonFly 6.5-DEVELOPMENT #1 Oct 7 01:28:37 UTC 2026 # # === DF-5533 PATCHED (fix v2) cold-drain fire: # -> FIRE-RETURNED-RC0 <-- sysctl kern.dfcold.fire=1 RETURNED # WARNING: A USB process has been left suspended <-- usb_process.c:437 finally reached # -1 B5 kpsusp dfhz <-- the usb_process thread, intentionally # parked suspended (documented semantics) # (no D-state "suspkp" sysctl/drain thread remains; bus lock released) # # BASELINE (unpatched): the same sysctl sat in D1/suspkt forever, never # returned, WARNING never printed, bus lock held by the wedged drain thread # (see run.log). # # Fix-v1 note (captured for the record): the first fix revision parked the # dispatcher in kproc_suspend_loop() while it still held the bus lock, which # deadlocked drain's post-suspend lockmgr reacquire (dfhz B5/kpsusp holding # the lock, sysctl D1 behind it). Fix v2 drops the lock around the park and # is the final validated diff: # ps during v1 wedge: # -1 B5 kpsusp dfhz # 1027 D1 dfhz sysctl # # Post-drain note: after a cold-path drain the usb_process thread is left # parked (up_ptr != NULL), so a *second* usb_proc_drain()/usb_proc_free() # on the same struct waits forever for thread exit — inherent to the # "left suspended" semantics the WARNING documents; irrelevant at the # boot-failure site (nobody re-drains). Harness kldunload after firing the # cold test therefore wedges; the guest was reset after validation.