Issues / #2512

#2512 SYCL, Arc A770 (i915): serve-mode SIGSEGV at the first graph-replay window (dies after layer 0); STRATA_VERIFY_STEPPED=1 avoids it

closed · @afterthought325 · 0 commentaires · Sur GitHub

BenchmarksServer & APIModels & quants

Description

**Hardware:** Arc A770 16 GB (Alchemist, **i915**), LXC container (Debian forky/sid) with the card passed through from a Proxmox host running kernel 7.0.14-20-pve. oneAPI 2026.1, NEO (`libze-intel-gpu1`) current. Ryzen 9 5900X, 64 GB RAM.
**Build:** `v0.1.44.1` (`296b59d2`), `build-sycl`, engine banner `session is up (engine 0.1.44.1)`.
**Model:** UnitySC Swift 1.5 (qwen4exp arch) IQ2_XS native pack, MTP head, PLE, `--resident-experts --spec 4 --mtp --max-context 32768 --kv k8v4 --expert-cache auto` (2579 slots, 3.47 GiB), `--no-prefill-borrow --prefill 4096`. Env: `STRATA_VERIFY_NO_HOST=0`, `IGC_EnableDPEmulation=1`, `NEOReadDebugKeys=1`, `OverrideDefaultFP64Settings=1`.

What happens
------------

Through `serve/server.py`, every request dies the same way: the engine exits with **SIGSEGV (exit code -11)** about 12.5 s after the request starts, before emitting any token. The startup capture itself succeeds:

    strata verify: window up to 6 tokens, 56.9 MiB of device buffers
    strata serve: 6330 MiB of VRAM free with everything loaded
    strata verify: captured the 6-token window (upload no error, sync no error)

and the first `GEN` line kills it. With `STRATA_VERIFY_DEBUG=1` the ladder localizes it to the **first window replay, right after layer 0**:

    verify dbg: captured; staging
    verify dbg: staged; launching
    verify dbg: launched
    verify dbg: layer 0 rang
    <process dies>

Reproduced standalone without the HTTP server (same argv captured from the live engine, `GEN 16 1,2,3,4,5,6,7,8` piped to stdin after READY): same death after `layer 0 rang`.

Bisect
------

* **The one-shot (non-serve) path with the same args and model does NOT crash** (14.95 tok/s decode, clean DONE). serve-vs-one-shot is the axis.
* `STRATA_VERIFY_STEPPED=1` **fixes it**: the standalone repro completes (`DONE 16 8 12749.9 4140.3 ...`), and serve mode has been stable since at 18.3-19.5 tok/s decode, 56% expert-cache hit rate.
* No change from: `STRATA_SPIN_MAX=20000000`, `STRATA_VERIFY_DEVICE_PLAN=1` (with and without), `--no-prefill-borrow`, and dropping `--resident-experts` (still crashes).
* `--no-capture` could not be used to isolate the replay path: it refuses to start with `--resident-experts` ("session_token has NO CPU expert-pool hook").
* Kernel side is clean: host `dmesg` shows nothing from i915/DRM around the crashes — no GT reset, no job timeout. Pure userspace SIGSEGV.

Note this is a different failure from #2194 (queue never drains, hang): here the process segfaults, and `STRATA_WINDOW_SYNC` is already at its i915 default of 1, so the drain-before-window fix from 0.1.44 is active and does not prevent this.

Question
--------

Is there an i915-specific assumption in the captured graph-replay window path (the one-shot path and the stepped path both survive; only the serve-mode graph replay dies, at the first MoE layer after the dense layer 0)? Curious whether the capture records something the i915 backend re-resolves differently on replay.

Happy to run a debug build, `ZE_DEBUG`, ASAN, or a candidate patch against this box — the standalone repro takes one load (~4 min) and one `GEN` line.

Sur le site

Liens install, modèles, releases.