Skip to content

Windows: Browser pane GPU-process crash on Cloudflare Turnstile page kills entire app; session resume re-triggers it (crash loop) #90461

Description

@craigstoller

Environment

  • App: Claude desktop for Windows, MSIX/Store install (Claude_pzs8sxrjxfjjc). First crash on 1.37937.1; four further crashes on 1.37937.3 after the in-between auto-update.
  • Claude Code (CCD): 2.1.246, Node 24.18.1 (from the app's own Starting app log lines)
  • OS: Windows 11 Home 10.0.26220
  • GPU: AMD Radeon 890M (integrated). Reproduced on two driver generations: 32.0.13046.1001 (2025-04-10) and 32.0.31041.1004 (2026-08-16) — a deliberate retest after updating the driver produced a byte-identical crash, so this is not a driver-specific fault.

Summary

Navigating the in-app Browser pane (preview browser) to a site fronted by a Cloudflare Turnstile challenge deterministically crashes the app's GPU process within ~1–3 seconds of page load, and the entire app exits with it. Reproduced 5/5 over two days, identical exit code every time, while ~30+ other page loads in the same sessions (including other Cloudflare-CDN sites without an active challenge) were fine.

Example trigger URL: https://www.partingtonps.com — a public site that fronts every request with a Turnstile challenge (Cf-Mitigated: challenge, HTTP 403, CSP allowing challenges.cloudflare.com, worker-src blob:).

A detail that may matter: in all reproductions the Browser pane was not displayed (an agent session driving the pane while hidden; computer{action:"screenshot"} reported "the Browser pane is not displayed, so the page is not compositing frames"). Not yet tested with the pane visible.

Log evidence

%LOCALAPPDATA%\Claude\Logs\main.log — five occurrences, identical signature:

2026-08-26 22:53:27 [warn] [PreviewContext] Blocked subresource to private-resolving host { resourceType: 'xhr' }
2026-08-26 22:53:30 [info] GPU process gone: {
  type: 'GPU',
  reason: 'crashed',
  exitCode: 101457950,
  serviceName: 'GPU'
}
<log goes silent — app process is gone; next line is the next launch's "Starting app">

All five occurrences (each immediately preceded, 1–3 s, by the same [PreviewContext] Blocked subresource to private-resolving host warning, and each the last line before the app died):

# Timestamp App version GPU driver exitCode
1 2026-08-26 22:53:30 1.37937.1 32.0.13046.1001 101457950
2 2026-08-26 23:00:42 1.37937.3 32.0.13046.1001 101457950
3 2026-08-26 23:06:27 1.37937.3 32.0.13046.1001 101457950
4 2026-08-26 23:10:19 1.37937.3 32.0.13046.1001 101457950
5 2026-08-27 08:49:02 1.37937.3 32.0.31041.1004 101457950

101457950 = 0x60C201E. No WER crash dump was produced (%LOCALAPPDATA%\CrashDumps has no Claude entries), no Application-log Event ID 1000, and Crashpad\reports under the package data dir is empty — so nothing user-visible captures the native crash.

Reproduction steps

  1. Start an agent session in the desktop app on Windows.
  2. Have it open the Browser pane (preview_start) and navigate to a URL fronted by a Cloudflare Turnstile challenge, e.g. https://www.partingtonps.com. (Confirm the challenge is active first: curl -sI shows Cf-Mitigated: challenge.)
  3. Within ~1–3 seconds of the challenge page loading: GPU process crashes, app exits. 5/5 in our environment.

Three compounding follow-on problems

  1. No GPU-process crash containment. One GPU-process crash takes down the whole app (and every running session in it). Chromium/Electron normally survives a GPU process crash and restarts it; here the app dies with it.

  2. Session resume walks straight back into the crash. Resuming the interrupted session re-invokes the agent, which re-issues the pending/next navigation to the same URL → instant crash again. The user rolled back and retried repeatedly and hit the identical crash every time ("crashes at the exact same spot"). There is no guard against resuming into a navigation that just killed the app.

  3. Post-crash recovery is broken. After the crash loop, the app refused to relaunch (message directing to "advanced options"). The MSIX Repair tool then refused to run with "Claude is running" even though Task Manager's Apps view showed nothing — background claude.exe CLI engine processes (%APPDATA%\Roaming\Claude\claude-code\<ver>\claude.exe) survive the GUI crash and apparently block the check. On one occasion Repair was still blocked after a full reboot (no Claude autostart entry exists in Run keys or the Startup folder; cause unknown). The only recovery that consistently worked was reinstalling from the claude.ai website download, which re-registers the same MSIX package version.

Suggested fixes

  • Contain GPU-process crashes: restart the GPU process / degrade the pane, don't exit the app.
  • On resume after an abnormal exit, don't automatically re-execute the browser navigation that immediately preceded the crash (or mark it suspect and require confirmation).
  • Make the repair/launch "already running" check ignore (or offer to terminate) orphaned background claude.exe engine processes.
  • Capture GPU-process crashes in Crashpad/telemetry — currently nothing lands anywhere a user can find.

Workaround (for anyone else hitting this)

Probe unfamiliar domains with curl -sI before loading them in the Browser pane; if the response carries Cf-Mitigated: challenge, don't pane-load the site. If the app wedges with "Claude is running," kill background claude.exe processes (Get-Process claude | Stop-Process -Force) or reinstall from the website download.

Activity

  1. veysiemrah commented on Aug 30, 2026

    @veysiemrah

    Reproduced on a third GPU vendor and a much newer app build — byte-identical exitCode 101457950 / 0x060C201E, same Turnstile trigger.

    Environment

    Trigger

    Identical: the in-app Browser pane loading a site fronted by a Cloudflare Turnstile challenge. In my case it was a site I develop locally being previewed from a Claude Code session — worth noting because "preview the app I'm building" is the pane's primary use case, and any dev site behind Turnstile hits this every time.

    Two crashes, ~24 minutes apart, same signature both times:

    23:37:45 [warn] [PreviewContext] Blocked subresource to private-resolving host { resourceType: 'xhr' }
    23:37:47 [info] GPU process gone: { type: 'GPU', reason: 'crashed', exitCode: 101457950, serviceName: 'GPU' }
    

    unknown-window.log shows the same probe burst 1–4 s ahead of each death:

    [warn] postMessage ... target origin ('https://challenges.cloudflare.com') does not match recipient window's origin
    [warn] OTS parsing error: Size of decompressed WOFF 2.0 is less than compressed size
    [warn] The powerPreference option is currently ignored when calling requestAdapter() on Windows. (x2)
    [error] %c%d font-size:0;color:transparent NaN
    [warn] A valid external Instance reference no longer exists.
    [warn] WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost
    
    # Timestamp (UTC+3) App version exitCode
    1 2026-08-30 23:37:47 1.40609.0.0 101457950
    2 2026-08-31 00:01:44 1.40609.0.0 101457950

    Three things that differ from the original report

    1. The app hung rather than exiting — and the OS did capture it.

    The report notes no WER event and an empty Crashpad dir. Here it is the opposite, which may give you artifacts to work with:

    • Crashpad\reports produced a 36 MB minidump per crash: 71955beb-0e67-4240-9106-82038640a6e5.dmp (23:37:47) and 529eaaf8-2d6a-496f-a2ad-a4912741831d.dmp (00:01:44).
    • Sentry caught the first one immediately after the GPU death: event id 6b9e3748d45345cdb7451187f4c5e097.
    • Windows logged Event 1002 Application Hang and WER Event 1001 MoAppHang (P1: Claude_1.40609.0.0_x64__pzs8sxrjxfjjc, P2: praid:Claude) — but 51 seconds after the GPU process died. So the main process did not exit with the GPU child; it wedged and the OS terminated it. That delay is a window in which containment (restart the GPU process, degrade the pane) would still have been possible.

    2. The MSIX wedge has a concrete file-level cause here.

    The 51-second hang is what breaks the package. Windows started its automatic repair at 23:41:38 while the packaged service was still alive, and the AppXDeploymentServer log shows exactly how it failed:

    error 0x80073D02: Unable to install because the following apps need to be closed Claude_1.40609.0.0_x64__pzs8sxrjxfjjc
    Packages were not updated because affected apps are still running. Running apps: {Claude_pzs8sxrjxfjjc!Claude}
    Deployment aborts due to active service Claude_pzs8sxrjxfjjc!Claude
    Failed to set the Trust Label on package ... Error: 0x80070057
    Illegal non-AppStore or non-AppInstaller package integrity validation attempted ... Flags: 0x0
    

    The aborted repair left app\resources\cowork-svc.exe half-written (its mtime is the exact minute of the failed repair), so the package sits permanently at Status: Modified, NeedsRemediation and every launch dies before writing a single log line.

    3. Add-AppxPackage -Register does not clear it.

    Worth recording as a dead end, since it is the obvious thing to try before Repair: re-registering the manifest in place returns success but leaves Status: Modified, NeedsRemediation unchanged and the app still unlaunchable. Verified with no leftover processes at all — CoworkVMService stopped with ProcessId: 0, no orphaned cowork-svc.exe, no phantom packaged claude.exe (the only claude.exe running was the standalone CLI at ~\.local\bin, which as others noted survives the GUI death unharmed). So the file-integrity damage is real, not just a stale lock, and Repair's re-download is genuinely required.

    Each launch attempt also retriggers OS remediation, which terminates the app mid-start — that is what "nothing happens when I click the icon" looks like from the user side.

    Happy to share the minidumps or fuller log excerpts if useful.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:desktopduplicateThis issue or pull request already existshas reproHas detailed reproduction stepsplatform:windowsIssue specifically occurs on Windows

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions