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
I am using the latest GPU driver version — currently on distro-provided 26.05.37020.3 (Ubuntu 26.04); latest release is 26.22.38646.4. Happy to retest on the latest release if you expect it to be relevant — the failure is easy for us to reproduce.
Distro-provided packages from Ubuntu 26.04 LTS archives (no Intel PPA / no manual install). Workload runs inside Docker containers with --device /dev/dri passthrough; the failure reproduces with two different container userspaces (oneAPI 2025.3.2 and the intel/vllm 0.17 prebuilt image), which points away from a specific container userspace.
Linux Distribution
Other
Other Linux Distribution
Ubuntu 26.04 LTS
Kernel Version & Boot Parameters
$ uname -a
Linux battlematrix 7.0.0-27-generic #27-Ubuntu SMP PREEMPT_DYNAMIC Thu Jun 18 19:13:49 UTC 2026 x86_64 GNU/Linux
$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-7.0.0-27-generic root=UUID=... ro quiet splash crashkernel=2G-4G:320M,...
Issue Description
Actual Behavior
Under sustained multi-request LLM inference (vLLM, tensor-parallel=2 across the two B70s, 8–12 concurrent requests, mixed 4k–32k contexts), roughly once every 2–6 hours one card takes a GPU page fault and the xe driver resets its compute/copy engines:
After the reset the userspace Level-Zero context is permanently wedged: the in-flight SYCL kernel never completes, the worker process never returns, and the serving engine dies (TimeoutError: RPC call to sample_tokens timed out → EngineDeadError). Only a full process/container restart recovers.
Key observations:
Both cards are affected (events captured on c3:00.0 and c7:00.0) → not a single defective unit.
8 application-level failures over July 2–4 each correlate to the second with a dmesg engine-reset event.
The dying scheduler step can be tiny: one captured crash dump shows 9 requests in decode, 9 total scheduled tokens, KV-cache at 14% — so this is not a batch-size/pressure problem. Incidence appears to scale with the number of kernel submissions over time, not with step size.
Ruled out on our side: model & quantization path (reproduces with int4/AWQ/FP8 weights), guided-decoding backend, vLLM graph capture (enforce-eager), vLLM async scheduling (disabled), vLLM version (intel/vllm 0.17 image and upstream v0.24 source build), scheduler oversubscription (max-num-seqs capped).
No GPU page faults / engine resets under sustained compute load; or, if an engine reset occurs, the Level-Zero context should recover (or at least fail fast with an error the application can handle) instead of wedging permanently.
Reproduction Rate
Always reproduces - 100% (within 2–6 hours of sustained load; see steps)
Steps to Reproduce
Host as described above (dual Arc Pro B70, xe driver, kernel 7.0.0-27).
Serve a ~27B LLM with vLLM v0.24 (XPU build from upstream Dockerfile.xpu, oneAPI 2025.3.2) with --tensor-parallel-size 2 --enforce-eager --max-model-len 32768, oneCCL env as above. (Also reproduces with the intel/vllm:0.17.0-xpu prebuilt image and a 70B AWQ model.)
Drive sustained concurrent load: 8–12 parallel /v1/chat/completions requests in a loop for hours (we use JSON-schema constrained outputs, mixed prompt sizes 4k–32k tokens).
Within 2–6 hours: dmesg shows the ccs/bcs engine reset + unsuccessful fault response on one of the cards, and the serving engine hangs permanently.
Minimal load generator (python, against the vLLM OpenAI endpoint):
importhttpx, json, time, concurrent.futuresascfSCHEMA= {"type":"object","properties":{"verdict":{"type":"string"},"reasoning":{"type":"string"}},
"required":["verdict","reasoning"]}
defcall(i):
p=f"Analyze company #{i}. Respond with JSON matching: {json.dumps(SCHEMA)}"returnhttpx.post("http://127.0.0.1:8080/v1/chat/completions", timeout=600, json={
"model":"local","messages":[{"role":"user","content":p}],
"max_tokens":300,"response_format":{"type":"json_object"}}).status_codewhileTrue:
withcf.ThreadPoolExecutor(max_workers=12) asex:
print(time.strftime("%T"), list(ex.map(call, range(12))))
Regression Information
Is this a regression?
Yes, this is a regression — unknown: this dual-B70 configuration has shown the issue on every stack we tried; we have no known-good baseline.
Logs
API Call Logs
Not captured yet — the incident is frequent enough to instrument: we can provide ze_debug/API traces, py-spy/gdb stacks of the hung worker process, or xe debugfs state on request. Please tell us which traces are most useful.
strace Logs
Not captured (available on request, see above).
System Logs / dmesg Output
All engine-reset events captured July 2–4 (timestamps CEST). Every one coincides (±2 s) with an application-level engine death:
Application-side (vLLM EngineCore parent; the GPU worker itself hangs and never returns — we can attach py-spy/gdb to it at the next occurrence on request):
(EngineCore) ERROR [core.py:1233] EngineCore encountered a fatal error.
File ".../vllm/v1/executor/multiproc_executor.py", line 387, in get_response
status, result = mq.dequeue(timeout=dequeue_timeout)
File ".../vllm/v1/executor/multiproc_executor.py", line 370, in get_response
raise TimeoutError(f"RPC call to {method} timed out.") from e
TimeoutError: RPC call to sample_tokens timed out.
(APIServer) vllm.v1.engine.exceptions.EngineDeadError: EngineCore encountered an issue.
Captured scheduler state at one crash (shows the dying step was 9 decode tokens across 9 requests, KV 14%):
See "Steps to Reproduce" above — vLLM serve command plus the 15-line python load generator. Full container logs, complete dmesg, and our original forensics write-up are in #946 (filed before we were aware of the template — apologies; this issue supersedes it).
Pre-submission Checklist
System Information
GPU Hardware
2× Intel Arc Pro B70 (Battlemage G31, PCI ID
8086:e223, ASRock subsystem6025)DRI Devices Information
GPU Detailed Information (lspci output)
Host platform: AMD EPYC 7413 (24c). GuC firmware:
xe/bmg_guc_70.binversion 70.58.0.Driver Version
intel-opencl-icd / libze-intel-gpu1 26.05.37020.3-1 (Ubuntu 26.04 distro packages)
Installed GPU Driver Packages
Driver Installation Details
Distro-provided packages from Ubuntu 26.04 LTS archives (no Intel PPA / no manual install). Workload runs inside Docker containers with
--device /dev/dripassthrough; the failure reproduces with two different container userspaces (oneAPI 2025.3.2 and the intel/vllm 0.17 prebuilt image), which points away from a specific container userspace.Linux Distribution
Other
Other Linux Distribution
Ubuntu 26.04 LTS
Kernel Version & Boot Parameters
Issue Description
Actual Behavior
Under sustained multi-request LLM inference (vLLM, tensor-parallel=2 across the two B70s, 8–12 concurrent requests, mixed 4k–32k contexts), roughly once every 2–6 hours one card takes a GPU page fault and the xe driver resets its compute/copy engines:
After the reset the userspace Level-Zero context is permanently wedged: the in-flight SYCL kernel never completes, the worker process never returns, and the serving engine dies (
TimeoutError: RPC call to sample_tokens timed out→EngineDeadError). Only a full process/container restart recovers.Key observations:
c3:00.0andc7:00.0) → not a single defective unit.CCL_ENABLE_SYCL_KERNELS=0,CCL_ATL_TRANSPORT=ofi,CCL_ZE_IPC_EXCHANGE=sockets,CCL_TOPO_FABRIC_VERTEX_CONNECTION_CHECK=0,SYCL_UR_USE_LEVEL_ZERO_V2=0) — it removed an earlier crash mode but not this one.Expected Behavior
No GPU page faults / engine resets under sustained compute load; or, if an engine reset occurs, the Level-Zero context should recover (or at least fail fast with an error the application can handle) instead of wedging permanently.
Reproduction Rate
Always reproduces - 100% (within 2–6 hours of sustained load; see steps)
Steps to Reproduce
Dockerfile.xpu, oneAPI 2025.3.2) with--tensor-parallel-size 2 --enforce-eager --max-model-len 32768, oneCCL env as above. (Also reproduces with the intel/vllm:0.17.0-xpu prebuilt image and a 70B AWQ model.)/v1/chat/completionsrequests in a loop for hours (we use JSON-schema constrained outputs, mixed prompt sizes 4k–32k tokens).Minimal load generator (python, against the vLLM OpenAI endpoint):
Regression Information
Is this a regression?
Logs
API Call Logs
Not captured yet — the incident is frequent enough to instrument: we can provide
ze_debug/API traces,py-spy/gdb stacks of the hung worker process, or xe debugfs state on request. Please tell us which traces are most useful.strace Logs
Not captured (available on request, see above).
System Logs / dmesg Output
All engine-reset events captured July 2–4 (timestamps CEST). Every one coincides (±2 s) with an application-level engine death:
Backtrace (if crash or hang occurred)
Application-side (vLLM EngineCore parent; the GPU worker itself hangs and never returns — we can attach py-spy/gdb to it at the next occurrence on request):
Captured scheduler state at one crash (shows the dying step was 9 decode tokens across 9 requests, KV 14%):
Reproducer
Source Code / Reproducer
See "Steps to Reproduce" above — vLLM serve command plus the 15-line python load generator. Full container logs, complete dmesg, and our original forensics write-up are in #946 (filed before we were aware of the template — apologies; this issue supersedes it).