DF-4196 / run.log
########## DF-4196: vblank_toctou ##########
--- ./vblank_toctou race (VULNERABLE interleaving; expect SIGFPE = kernel #DE)
[main] mode=race (initial hwmode.crtc_clock=148500 kHz, htotal=2200)
[vblank_off] event_lock released; executing lock-free vblank->hwmode.crtc_clock = 0 (drm_vblank.c:1169)
Floating point exception (core dumped)
rc=136
--- ./vblank_toctou race_fixed (fix.diff semantics: cached divisor)
[main] mode=race_fixed (initial hwmode.crtc_clock=148500 kHz, htotal=2200)
[vblank_off] event_lock released; executing lock-free vblank->hwmode.crtc_clock = 0 (drm_vblank.c:1169)
[main] SURVIVED: delta_ns=1481818 (check passed BEFORE zero store, division used a cached-nonzero value)
rc=0
--- determinism 3x
Floating point exception (core dumped)
race#1 rc=136
fixed#1 rc=0
Floating point exception (core dumped)
race#2 rc=136
fixed#2 rc=0
Floating point exception (core dumped)
race#3 rc=136
fixed#3 rc=0
########## DF-4197: seqlock_aba ##########
--- ./seqlock_aba demo (DF shim semantics)
[demo] semantics=DF-shim
[demo] read_seqbegin -> 0; reader loaded count=100 (preempted here...)
[demo] writer ran a FULL cycle: count=101 time=200000, sequence=0
[demo] reader resumed: loaded time=200000, read_seqretry=0
[demo] RESULT: TORN PAIR ACCEPTED {count=100(old), time=200000(new)} — reader believes it is consistent
rc=1
--- ./seqlock_aba demo_fixed (Linux monotonic seqcount semantics)
[demo] semantics=FIXED(Linux)
[demo] read_seqbegin -> 0; reader loaded count=100 (preempted here...)
[demo] writer ran a FULL cycle: count=101 time=200000, sequence=2
[demo] reader resumed: loaded time=200000, read_seqretry=1
[demo] RESULT: retry=1 — torn pair REJECTED, reader retries
rc=0
--- ./seqlock_aba stress
[stress] semantics=DF-shim consistent=8910351 torn_accepted=4189
rc=1
--- ./seqlock_aba stress_fixed
[stress] semantics=FIXED(Linux) consistent=6953440 torn_accepted=0
rc=0