DragonFlyBSD Kernel Audit
DF-2630 / manifest.json
← back to finding ↓ download raw
{
  "finding_id": "DF-2630",
  "title": "hammer2 VFS_ROOT quorum wedge: pfs_nmasters > nchains pins mount forever, unkillable D-state pile-up",
  "verdict": "reproduced",
  "impact": "dos",
  "confidence": "certain",
  "reproduce": {
    "build": "python3 forge_df2630.py base.img wedge wedge.img && python3 forge_df2630.py base.img control control.img (base.img = guest newfs_hammer2 -L testvol on a 64M truncate)",
    "run": "guest root: sh trigger_df2630.sh  (stock wedge; reboot to recover); sh control_df2630.sh (causality); sh fix_validate.sh (fix kernel)",
    "expected": "stock: mount RC=0; ls wedges wchan h2root; later lookups+umount unkillable D-state vfs_busy (kill -9 immune, 40+ min); umount -f D-state h2twait; degraded shutdown; reboot only. fixed: ls -> EIO after vfs.hammer2.root_timeout (5 s demo), sticky instant retry, umount -f RC=0 removes the mount, zero waiters, system healthy."
  },
  "kernel_refs": [
    "sys/vfs/hammer2/hammer2_vfsops.c:527",
    "sys/vfs/hammer2/hammer2_vfsops.c:1966",
    "sys/vfs/hammer2/hammer2_cluster.c:348",
    "sys/kern/vfs_nlookup.c:1053",
    "sys/kern/vfs_cache.c:4504",
    "sys/kern/vfs_syscalls.c:635"
  ],
  "fix_status": "fixed",
  "artifacts": [
    "README.md",
    "VERDICT.md",
    "forge_df2630.py",
    "trigger_df2630.sh",
    "control_df2630.sh",
    "fix_validate.sh",
    "build.sh",
    "run.sh",
    "run.log",
    "dstate_census.txt",
    "shutdown_serial.log",
    "fix_run.log",
    "build.log",
    "env.txt",
    "fix.diff",
    "manifest.json",
    "verdict.json",
    "fix.combined.diff"
  ]
}