DF-4952 / ab_all.log
=== 1) baseline (in-tree snd_fxdiv_gen.awk, unpatched mixer) === Total: 6 0: [0] attn: (x * 1) >> 0 1: [1] attn: (x * 1) >> 0 2: [-1] attn: (x * 1) >> 0 3: [-1] attn: (x * 1) >> 0 4: [-1] attn: (x * 1) >> 0 5: [-1] attn: (x * 1) >> 0 ffrec: parent REC vchan fmt S16_LE 6ch sz=12 hw fmt S16_LE 2ch (matrix below mixer) bufsoft: bufsize=16390 (bad residue: FXROUND(16390,12)=16392 > 16390) tmpbuf allocsize=20480 (round_page) maxfeed=65544 FXDIV_MAX=65536 ---- feed_mixer_rec (real feeder_mixer.c + real feeder_matrix.c) ---- ACQUIRE-OVER: count=16392 free=16390 (rl=0 size=16390) -- KASSERT compiled out, rl -> 16392 returned 0; bufsoft rl=1 size=16390 free=0x00004005 acquire-over count=1 worst=2 root max write offset past tmpbuf base: 18446744073709188704 (window 20480) REAR-GUARD SMASHED: window=20480 first_oob=0 farthest=45064 smashed_bytes=44367 ffrec: OOB PROVEN (exit 42 == linear heap OOB write past tmpbuf) exit=42 (42 == heap OOB write PROVEN) === 2) in-tree generator + fix.diff clamp === Total: 6 0: [0] attn: (x * 1) >> 0 1: [1] attn: (x * 1) >> 0 2: [-1] attn: (x * 1) >> 0 3: [-1] attn: (x * 1) >> 0 4: [-1] attn: (x * 1) >> 0 5: [-1] attn: (x * 1) >> 0 ffrec: parent REC vchan fmt S16_LE 6ch sz=12 hw fmt S16_LE 2ch (matrix below mixer) bufsoft: bufsize=16390 (bad residue: FXROUND(16390,12)=16392 > 16390) tmpbuf allocsize=20480 (round_page) maxfeed=65544 FXDIV_MAX=65536 ---- feed_mixer_rec (real feeder_mixer.c + real feeder_matrix.c) ---- returned 0; bufsoft rl=1 size=16390 free=0x00004005 acquire-over count=0 worst=0 root max write offset past tmpbuf base: 18446744073709188704 (window 20480) ffrec: clean (exit 42 == linear heap OOB write past tmpbuf) exit=0 (0 == clamp kills the sink) === 3) fixed generator (snd_fxdiv_gen_fixed.awk, unpatched mixer) === Total: 6 0: [0] attn: (x * 1) >> 0 1: [1] attn: (x * 1) >> 0 2: [-1] attn: (x * 1) >> 0 3: [-1] attn: (x * 1) >> 0 4: [-1] attn: (x * 1) >> 0 5: [-1] attn: (x * 1) >> 0 ffrec: no bad-residue bufsize exists -- over-return precondition eliminated; feed_mixer_rec cannot wrap ffrec: clean exit=0 (0 == arming precondition eliminated)