DF-0710 / run.log
=== DF-0710 sco_input while-vs-if logic harness ===
sco_recvspace(hiwat)=4096 mbmax=4096 LOOP_CAP=100000
[case 1] empty buf + oversize pkt (8192 > 4096)
sbspace before = 4096
BUGGY(while): iters=100000 *** WOULD LOOP FOREVER *** (appended=0)
FIXED (if) : iters=1 (dropped packet) (appended=0)
[case 2] empty buf + pkt 4097 (> hiwat 4096 by 1)
sbspace before = 4096
BUGGY(while): iters=100000 *** WOULD LOOP FOREVER *** (appended=0)
FIXED (if) : iters=1 (dropped packet) (appended=0)
[case 3] half-full buf (2048) + oversize pkt 8192
sbspace before = 2048
BUGGY(while): iters=100000 *** WOULD LOOP FOREVER *** (appended=0)
FIXED (if) : iters=1 (dropped packet) (appended=0)
[case 4] 3 records (1024 each) + oversize pkt 8192
sbspace before = 1024
BUGGY(while): iters=100000 *** WOULD LOOP FOREVER *** (appended=0)
FIXED (if) : iters=1 (dropped packet) (appended=0)
[case 5] empty buf + small pkt 100 (control)
sbspace before = 4096
BUGGY(while): iters=0 (terminated) (appended=1)
FIXED (if) : iters=0 (appended) (appended=1)
[case 6] empty buf + pkt 4096 (== hiwat, fits)
sbspace before = 4096
BUGGY(while): iters=0 (terminated) (appended=1)
FIXED (if) : iters=0 (appended) (appended=1)
=== SUMMARY ===
cases where BUGGY(while) infinite-loops: 4 / 6
FIXED (if) terminates in <=1 iter on ALL cases: YES
BUG CONFIRMED: while-loop spins when an incoming SCO packet exceeds
sco_recvspace and the buffer cannot free enough room (incl. empty buf)
LOGIC_RUN_EXIT=0