Issues / #419
#419 strata-vision.exe v0.1.32 prebuilt crashes (0xC000001D) on CPUs without AVX-512: unguarded AVX-512 vmovups at strata_vision+0x285545
closed · @lxfebd · 2 commentaires · Sur GitHub
Setup & installServer & APIAMD / HIPNVIDIA / CUDAModels & quantsWindows
Description
## Summary
The prebuilt `strata-vision.exe` shipped in the v0.1.32 release crashes with `STATUS_ILLEGAL_INSTRUCTION` (0xC000001D) on any CPU without AVX-512. A debugger shows the faulting instruction is an **EVEX-encoded `vmovups zmm0` inside strata-vision.exe itself**, executed during startup with no CPUID runtime dispatch. The main engine binary from the same release is fine — it correctly falls back (`this CPU has no AVX-512: the expert kernels run on AVX-2`) — and the v0.1.27 `strata-vision.exe` works on the same machine and model files.
This affects a large installed base: every Intel consumer chip 12th–14th gen (AVX-512 fused-disabled) and AMD Zen 4 has no AVX-512. The release advertises `"portable": true` in BUILD.json, so the runtime dispatch is expected to cover this.
## Environment
- Windows 11 10.0.26200, i7-13700KF (AVX2/FMA only, no AVX-512), RTX 5090D 24 GB
- Engine: official prebuilt v0.1.32 release, `BUILD.json`: `{"version": "0.1.32", "source": "release", "cuda": "13.0", "vision": "gpu", "portable": true, "vision_archs": [75, 86, 89, 120], "ptx": true}`
- `strata-vision.exe` = 107,928,064 bytes, sha256 begins `bd5bd917c4d34849…`
- (v0.1.27 `strata-vision.exe` = 90,725,376 bytes, sha256 begins `98ffde98f5388b51…`, works fine)
## Reproduce
```bat
strata-vision.exe --mmproj <mmproj gguf> --model <model gguf> --gpu
```
- No args: usage prints fine, exits 2 (so the binary loads; the crash is during model/backend init).
- With args: exits immediately, code `0xC000001D`, **empty stderr, no READY line**. The v0.1.27 binary prints `READY 2560` in ~6 s with the same files.
- `--flash-attn off` → same crash, so it is not the new #288 flash-attn path.
- Omitting `--gpu` → `ggml_cuda_init: failed to initialize CUDA …` is printed (CUDA deliberately unavailable), then the **same crash on the pure-CPU path** — so it is a host-code issue, not a GPU kernel issue.
- Same crash when launched from the server with the server's own child env, and from a plain console: unrelated to how it is spawned.
## Crash evidence (WinDbg `cdb.exe`)
```
(9b8c.90cc): Illegal instruction - code c000001d (!!! second chance !!!)
strata_vision+0x285545:
00007ff7`1c405545 62f17c4810052114c200 vmovups zmm0,zmmword ptr [strata_vision+0xea6970]
Child-SP RetAddr Call Site
00000079`f737f510 00007ff7`1c23a9e3 strata_vision+0x285545
00000079`f737f540 00007ff7`1c249ec9 strata_vision+0xba9e3
00000079`f737f600 00007ff7`1c1e1cc4 strata_vision+0xc9ec9
00000079`f737f710 00007ff7`1c1eadd2 strata_vision+0x61cc4
00000079`f737f880 00007ff7`1c1dd9f1 strata_vision+0x6add2
00000079`f737f8d0 00007ff7`1cfe750c strata_vision+0x5d9f1
00000079`f737fc90 00007ffe`a994cd87 strata_vision+0xe6750c (thread start)
00000079`f737fcd0 00007ffe`aaaacaec KERNEL32!BaseThreadInitThunk+0x17
```
`62 …` = EVEX prefix, `zmm0` = 512-bit register: an AVX-512 instruction reached unconditionally during startup on a non-AVX-512 CPU. Whatever introduced it between 0.1.27 and 0.1.32 vision builds was compiled without runtime dispatch (e.g. a `/arch:AVX512` TU or an AVX-512 intrinsic constant-load in an init path).
## Impact / workaround in use
Vision is completely unavailable on non-AVX-512 CPUs with the 0.1.32 prebuilt (`RuntimeError: the vision encoder did not start:`). We pinned the 0.1.27 `strata-vision.exe` next to the 0.1.32 engine as a workaround and it works end-to-end (image requests answered via `/v1/messages`).
Suggest: add a CPUID guard (or build the vision exe with the same dispatch policy as the main engine), and maybe a CI smoke run on a non-AVX-512 runner.Sur le site
Liens install, modèles, releases.