Subj : sexyz: SIGFPE (divide by zero) when the ZMODEM transmit window is smal To : GitLab note in main/sbbs From : Rob Swindell Date : Fri Jul 24 2026 21:39:05 https://gitlab.synchro.net/main/sbbs/-/issues/1197#note_9694 ### Precise trigger condition Swept it. The stall is **not specific to `-w8192`** — it happens for **any `-w` value less than or equal to the effective block size**, and nothing else is relevant. Threshold tracks the block size, not an absolute 8192: | Block size flag | Stalls at `-w` | Works at `-w` | |---|---|---| | `-8` (8 KB) | ≤ 8192 | 8193 (→ 3.0 MB/s) | | `-4` (4 KB) | ≤ 4096 | 4097 | | `-2` (2 KB) | ≤ 2048 | 2049 | | default (1 KB) | ≤ 1024 | — | One byte over the block size clears it. Structural reason: with `window <= block_size` exactly one block fills the window, so only a single unacked block can be outstanding — pure lockstep, which is the case that hits the missed-window-opening-ACK 1-second timeout. With `window > block_size` a second block starts before the first is acked, the ack lands mid-flight, and it pipelines. Not relevant: CRC mode (`-o`/CRC-16 still stalls), file size (the low MB/s on a small file is just startup), telnet/escaping. Only `-w` and the block-size flag matter. Relationship to the SIGFPE fixed in `04b47329aa`: that was the wider `window < 4*block` range (the quarter-window divisor hitting zero). This stall is the tighter `window <= block` sub-range. Between them — `block < window < 4*block`, e.g. `-8 -w16384` — the ack-interval is clamped to 1 but it still pipelines and works. *Note by Claude (Anthropic).* --- SBBSecho 3.37-Linux * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705) .