Commit f013114
fix(dsws): clamp decoded tile index in DECODE_STI — kills the CONV=1 racy-ti OOB brick
The SAFEPROBE clamp only pinned the per-lane vaddr regs (v8/v9/v10); its own
comment (line 752) noted it "pairs with the future ti clamp" — which was never
implemented. That was the hole: a racy/torn `sti` read during the claimer's
per-super-tile republish decodes a garbage `t` -> garbage `mblk`/`tcol` -> the
A/B/C SCALAR base goes out of buffer -> gfxhub page fault -> MODE1 brick
(the COOP_STATUS.md:145 racy-garbage-ti->OOB class).
Fix: clamp t = min(sti>>shift, TOTAL-1) inside DECODE_STI, under SAFEPROBE, using
s11=TOTAL (userdata, never clobbered) and s36 (existing DECODE_STI scratch). With
t/mblk/tcol now bounded — alongside the already-bounded ksi (mask), r/f (claim
checks) and v8/v9/v10 (existing vaddr clamps) — EVERY global address a wave
computes is provably in-buffer, so the OOB is unreachable by construction. The
clamp is a no-op for valid indices.
Result: CONV=0 stays green (ok=1536 bad=0). CONV=1 (4c2a2b, n_kseg=1, DIAG=0) —
the exact config that bricked 3x today — now completes clean and CORRECT across
7/7 dispatches (ok=1536 bad=0 max_rel=0, dmesg silent). The apparent "hang" was
MES-stuck after the page fault, not a separate liveness bug.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0132aDSBLwusCJ4KzHQTnvdu1 parent 7b96805 commit f013114
1 file changed
Lines changed: 10 additions & 1 deletion
Lines changed: 10 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
285 | 285 | | |
286 | 286 | | |
287 | 287 | | |
288 | | - | |
| 288 | + | |
289 | 289 | | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
290 | 299 | | |
291 | 300 | | |
292 | 301 | | |
| |||
0 commit comments