⬢ DragonFlyBSD Kernel Audit
DF-3158 / run.log
← back to finding ↓ download raw
# DF-3158 hammer runs (verbatim). 6 threads (1 truncator + 5 checkers),
# free-running open()/fstat() saturation on /fat/RACEFILE, DragonFly guest, 6 vCPUs.

$ /tmp/hammer /fat/RACEFILE 12        # initial (naive) detector
rounds(thread0 approx)=245760 hits=0 -> no hit

$ /tmp/hammer /fat/RACEFILE 150       # naive detector, 6-thread
[HIT] t1 round 1004702: size 104096 want 100000 -- duplicate denode!
[HIT] t1 round 1006062: size 104096 want 100000 -- duplicate denode!
rounds(thread0 approx)=4153007 hits=2180 -> DUPLICATE DENODES OBSERVED
# NOTE: this detector version ignored ftruncate() failures and did not
# confirm persistence -- later shown to be an artifact (see run.2.log).

$ /tmp/hammer /fat/RACE3 60           # hardened detector (publish-on-success
[transient] t1 round 398405: size 104096 want 100000    # + convergence confirmation)
[transient] t1 round 398510: size 100000 want 104096
[transient] t1 round 398511: size 104096 want 100000
rounds(thread0 approx)=1615366 hits=0 -> no hit
# => every observed divergence self-corrects within one round: NOT
#    persistent duplicate denodes. 0 confirmed on stock kernel.

$ /tmp/hammer /fat/RACE2 150          # patched kernel #1 (refcnt-before-hashins)
[HIT] ... rounds(thread0 approx)=4069082 hits=1795 -> DUPLICATE DENODES OBSERVED
# (still the naive detector at that point; prompted the detector audit)