You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Linux x86_64: the golden harness dies with SIGFPE (compare.py exit -8) #69
Found by test.yml run 37194264048 (feat/ci-gate), linux x86_64. Every suite passes (122/122, ok 1724, FAIL 0). Then DOCWATCH runs tests/golden/compare.py, which exits -8 (SIGFPE) before printing its SUMMARY. All 94 DOCWATCH failures on that runner are the golden counts that depend on it. The macOS runner's golden run passes.
SIGFPE on x86 is an integer division by zero (or INT_MIN / -1) in native code. Rust's / panics instead, so the cause is likely in vendored C, a SIMD path, or an unchecked / wrapping division.
Done when
The golden case and the kernel are identified (docker linux/amd64 is fine for correctness).
Fixed, with a regression test that reproduces it on x86 (CI).
SIGFPE verdict: upstream's, not _C's. Two golden cases made upstream torch 2.13.0+cpu trap on x86: sdpa_flash_cpu with h_q=4, h_kv=6 (division by h_q // h_kv == 0), and int64 div(INT64_MIN, -1, trunc) (idiv overflow). Fixed test-side: the harness no longer calls upstream for those two. compare.py now reaches its SUMMARY in docker amd64, with 48 numeric mismatches against x86 upstream, the #40 classes (sdpa fp16/bf16 logsumexp, sort ties of 80, bf16 add with alpha, matmul bit-exactness, weighted nll_loss, non-periodic kaiser). Next: measure them on the CI runner, not QEMU, then give golden cases the same named x86-divergence pin the suites have.
Activity
b-re-w commentedon Oct 4, 2026
SIGFPE verdict: upstream's, not
_C's. Two golden cases made upstream torch 2.13.0+cpu trap on x86: sdpa_flash_cpu with h_q=4, h_kv=6 (division byh_q // h_kv == 0), and int64div(INT64_MIN, -1, trunc)(idiv overflow). Fixed test-side: the harness no longer calls upstream for those two. compare.py now reaches its SUMMARY in docker amd64, with 48 numeric mismatches against x86 upstream, the #40 classes (sdpa fp16/bf16 logsumexp, sort ties of 80, bf16 add with alpha, matmul bit-exactness, weighted nll_loss, non-periodic kaiser). Next: measure them on the CI runner, not QEMU, then give golden cases the same named x86-divergence pin the suites have.golden: stop asking upstream for the two cases that SIGFPE it on x86
golden: pin the 54 x86_64 Linux divergences by exact case name (#69)
Merge pull request #90 from thisisthepy/feat/golden-x86
b-re-w commentedon Oct 16, 2026
Landed in develop via #90
golden: pin the 16 x86_64 whole-tensor min/max signed-zero cases (#49, …
golden: pin the two float16 gelu(+inf) cases on x86_64 (#69)
Merge pull request #103 from thisisthepy/feat/golden-x86-names