Intel Arc (Windows): crash in the Intel Vulkan driver while compiling pipelines at the login screen (since 1.3.0) #876

Closed
opened 2026-10-19 18:37:34 +00:00 by sky_line · 2 comments
Owner

A user on Intel Arc A750 (Windows 11, Intel driver 101.8991, Vulkan 1.4.356, Ryzen 7 5800X, 32 GB) crashes at the login screen on every start since 1.3.0 (reported as "since 1.3.0.14"; also on 1.4.0 Beta 1). Earlier 1.3 betas reportedly worked.

Crash

  • 0xc0000005 access violation inside the Intel Vulkan driver (igvk64.dll+0x653291, reading address 0x350), on a worker thread VK pipeline compile. Our frames are only the caller (vulkan-1.dll -> SlipstreamViewer.exe).
  • Startup state STATE_LOGIN_SHOW, frame 0: the first batch of world pipeline compiles. 11 in flight: mWaterCapPipe, LIT_DRAW, mCullPipe, LIT_PROBE_DRAW, LIT_RIG, LIT_ALPHA, LIT_RIG_ALPHA, mPreRigPipe[i], mHudDrawPipe, mHudAlphaPipe, mWaterPipe.
  • Cold pipeline cache every time (the viewer dies before it saves one), so it repeats deterministically.
  • RAM / VRAM are not a factor (746 MB private, 20 GB available).

Leads

  • Shader changes between v1.3.0-beta.13 and v1.3.0 that feed the pipelines above: #840 (mask cutoff), #841 (RT mask noise), #842 (near haze glow), #835 (rigged alpha sort), #843 (GTAO / dither). Prime suspect: one of these hits an Intel compiler bug.
  • Also in 1.3.0: compile memory cap (33ef9f1f25) -- it only lowers concurrency, unlikely.
  • A driver-side thread-safety bug is less likely (beta 13 compiled as many in parallel).

Steps

  1. Crash report names the pipeline the crashing thread was compiling (in progress): each compile crumb records its OS thread; the Windows crash handler prints crashed while compiling pipeline: <name>. The next report will point at one shader.
  2. Ask the user to try the next beta (with step 1) and send the log.
  3. Once the shader is known: find the construct that trips the Intel compiler and rewrite it (or guard it for Intel), and report it to Intel.
  4. If it is not one shader (crashes vary): try serial compiles on Intel Windows as a diagnostic / workaround.

Logs are kept locally (they contain the user's account details).

A user on **Intel Arc A750** (Windows 11, Intel driver **101.8991**, Vulkan 1.4.356, Ryzen 7 5800X, 32 GB) crashes **at the login screen on every start** since **1.3.0** (reported as "since 1.3.0.14"; also on 1.4.0 Beta 1). Earlier 1.3 betas reportedly worked. ## Crash - `0xc0000005` access violation **inside the Intel Vulkan driver** (`igvk64.dll+0x653291`, reading address 0x350), on a worker thread `VK pipeline compile`. Our frames are only the caller (`vulkan-1.dll` -> `SlipstreamViewer.exe`). - Startup state `STATE_LOGIN_SHOW`, frame 0: the first batch of world pipeline compiles. 11 in flight: `mWaterCapPipe`, `LIT_DRAW`, `mCullPipe`, `LIT_PROBE_DRAW`, `LIT_RIG`, `LIT_ALPHA`, `LIT_RIG_ALPHA`, `mPreRigPipe[i]`, `mHudDrawPipe`, `mHudAlphaPipe`, `mWaterPipe`. - Cold pipeline cache every time (the viewer dies before it saves one), so it repeats deterministically. - RAM / VRAM are not a factor (746 MB private, 20 GB available). ## Leads - Shader changes between v1.3.0-beta.13 and v1.3.0 that feed the pipelines above: #840 (mask cutoff), #841 (RT mask noise), #842 (near haze glow), #835 (rigged alpha sort), #843 (GTAO / dither). Prime suspect: one of these hits an Intel compiler bug. - Also in 1.3.0: compile memory cap (33ef9f1f25) -- it only lowers concurrency, unlikely. - A driver-side thread-safety bug is less likely (beta 13 compiled as many in parallel). ## Steps 1. **Crash report names the pipeline the crashing thread was compiling** (in progress): each compile crumb records its OS thread; the Windows crash handler prints `crashed while compiling pipeline: <name>`. The next report will point at one shader. 2. Ask the user to try the next beta (with step 1) and send the log. 3. Once the shader is known: find the construct that trips the Intel compiler and rewrite it (or guard it for Intel), and report it to Intel. 4. If it is not one shader (crashes vary): try serial compiles on Intel Windows as a diagnostic / workaround. Logs are kept locally (they contain the user's account details).
sky_line added this to the Slipstream project 2026-10-19 18:37:34 +00:00
Author
Owner

Update (1.4.0 Beta 4): confirmed as parallel pipeline compiles

New crash report (Beta 4)

  • Same crash as in 1.3.0: igvk64.dll+0x653291, reading address 0x350, on a VK pipeline compile thread, about 0.1 s after the login screen appears.
  • The pipelines in flight were completely different from the 1.3.0 report:
    • this time: selection, sky and particle pipelines;
    • in 1.3.0: lit, water, cull and rigged pipelines, which this time had all already compiled without trouble.
  • The pipeline cache was warm (about 5.8 MB, 407 learned pipelines), and up to 15 compiles were running at once.
  • So it is not one shader. It points to the driver failing under concurrent pipeline creation.

Workaround confirmed

  • With RenderVKPipelineCompileThreads = 1, the reporter no longer crashes.

To do

  • A. On Intel's Windows Vulkan driver (VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS), limit pipeline compiles to 1 thread by default. Log it at startup, and let an explicit RenderVKPipelineCompileThreads value override it.
  • B. If the previous session crashed inside a pipeline compile (the crash handler already knows it was on a compile thread, or inside the driver's compiler), start the next session with compiles limited to 1 thread. Log it, keep it for a few clean sessions, and then step back up. This follows the soft-degrade policy and covers other drivers with the same kind of bug (see #890).

Side issue

  • The crash report's "crashed while compiling pipeline: …" line did not appear. The crashing thread was not registered as compiling when it faulted. Check whether the per-thread compile tracking is missing a create path on Windows.
## Update (1.4.0 Beta 4): confirmed as parallel pipeline compiles **New crash report (Beta 4)** - Same crash as in 1.3.0: `igvk64.dll+0x653291`, reading address 0x350, on a `VK pipeline compile` thread, about 0.1 s after the login screen appears. - The pipelines in flight were completely different from the 1.3.0 report: - this time: selection, sky and particle pipelines; - in 1.3.0: lit, water, cull and rigged pipelines, which this time had all already compiled without trouble. - The pipeline cache was warm (about 5.8 MB, 407 learned pipelines), and up to 15 compiles were running at once. - So it is not one shader. It points to the driver failing under concurrent pipeline creation. **Workaround confirmed** - With `RenderVKPipelineCompileThreads` = 1, the reporter no longer crashes. **To do** - **A.** On Intel's Windows Vulkan driver (`VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS`), limit pipeline compiles to 1 thread by default. Log it at startup, and let an explicit `RenderVKPipelineCompileThreads` value override it. - **B.** If the previous session crashed inside a pipeline compile (the crash handler already knows it was on a compile thread, or inside the driver's compiler), start the next session with compiles limited to 1 thread. Log it, keep it for a few clean sessions, and then step back up. This follows the soft-degrade policy and covers other drivers with the same kind of bug (see #890). **Side issue** - The crash report's "crashed while compiling pipeline: …" line did not appear. The crashing thread was not registered as compiling when it faulted. Check whether the per-thread compile tracking is missing a create path on Windows.
Author
Owner

Fixed in 1.4.1 (366c01136b). Reopen if you still see it.

Fixed in 1.4.1 (366c01136b). Reopen if you still see it.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#876
No description provided.