Skip to content

Commit 1e262e3

Browse files
Capture WebGPU crash dumps from Windows CI
Rerun the WebGPU suite on the Windows job with the support probe bypassed and minidump collection enabled, uploading any crash dump as an artifact. The step never affects job status and exists to capture the WARP-only native fault with symbols for upstream diagnosis.
1 parent 817df78 commit 1e262e3

2 files changed

Lines changed: 32 additions & 1 deletion

File tree

.github/workflows/build-and-test.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,32 @@ jobs:
208208
SIXLABORS_TESTING_PREVIEW: True
209209
XUNIT_PATH: .\tests\ImageSharp.Drawing.Tests # Required for xunit
210210

211+
# Diagnostic capture for the WARP-only native fault: reruns the WebGPU suite with the
212+
# support probe bypassed so the fault can occur, collecting crash dumps as artifacts.
213+
# Never affects job status; remove once the fault is root-caused upstream.
214+
- name: WebGPU WARP Diagnostic
215+
if: ${{ runner.os == 'Windows' && matrix.options.sdk-preview != true }}
216+
continue-on-error: true
217+
timeout-minutes: 12
218+
shell: pwsh
219+
run: |
220+
New-Item -ItemType Directory -Force warp-dumps | Out-Null
221+
dotnet test tests/ImageSharp.Drawing.Tests -c Release -f ${{matrix.options.framework}} --filter "FullyQualifiedName~WebGPUDrawingBackendTests"
222+
env:
223+
SIXLABORS_TESTING: True
224+
SIXLABORS_WEBGPU_PROBE_BYPASS: 1
225+
DOTNET_DbgEnableMiniDump: 1
226+
DOTNET_DbgMiniDumpType: 2
227+
DOTNET_DbgMiniDumpName: ${{ github.workspace }}\warp-dumps\webgpu-crash-%p.dmp
228+
229+
- name: Export WebGPU Diagnostic Dumps
230+
uses: actions/upload-artifact@v7
231+
if: ${{ always() && runner.os == 'Windows' && matrix.options.sdk-preview != true }}
232+
with:
233+
name: webgpu_warp_dumps_${{ matrix.options.framework }}
234+
path: warp-dumps/
235+
if-no-files-found: ignore
236+
211237
- name: Export Failed Output
212238
uses: actions/upload-artifact@v7
213239
if: failure()

tests/ImageSharp.Drawing.Tests/TestUtilities/Attributes/WebGPUFactAttribute.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,13 @@ internal static WebGPUEnvironmentError ComputeProbeResult
3535
/// <summary>
3636
/// Gets a value indicating whether WebGPU compute is supported on the current system.
3737
/// </summary>
38+
/// <remarks>
39+
/// Setting <c>SIXLABORS_WEBGPU_PROBE_BYPASS=1</c> skips the probe so diagnostic runs can
40+
/// execute the suite on adapters the probe rejects, capturing native crash dumps.
41+
/// </remarks>
3842
internal static bool IsComputeSupported
39-
=> ComputeProbeResult == WebGPUEnvironmentError.Success;
43+
=> Environment.GetEnvironmentVariable("SIXLABORS_WEBGPU_PROBE_BYPASS") == "1"
44+
|| ComputeProbeResult == WebGPUEnvironmentError.Success;
4045

4146
/// <summary>
4247
/// Gets the skip message used when WebGPU compute is unavailable.

0 commit comments

Comments
 (0)