mirror of
https://github.com/stablyai/orca.git
synced 2026-10-20 00:03:45 +00:00
Three Windows crash/regression fixes from shipped 1.4.156/1.4.158/1.4.159 crash reports. GPU fallback (cluster D, 14 reports, exit 0x80000003 STATUS_BREAKPOINT): the software-rendering fallback called disableHardwareAcceleration() plus --disable-gpu, neither of which removes the GPU child process — Chromium still spawns it to host Viz and merely drops the backend to software GL. Measured on Windows 11 / Electron 43.1.0: gpuProcessCount stays 1. So a GPU process being killed by a bad driver or an injected DLL kept dying after the fallback engaged, on every launch, for the life of that build (the marker is sticky per version). The crash tails show exactly this: gpu_fallback_applied followed by another GPU crash 1.3s later. --in-process-gpu is the only switch that drops the child count to 0; --disable-software-rasterizer is deliberately excluded because it also kills SwiftShader, which would drop every terminal to the DOM renderer. WSL distro list: a successful-but-empty `wsl --list --quiet` was cached for the process lifetime. `wsl --install` reports zero distros while one is still provisioning, so an early probe latched "no WSL" until restart — WSL appeared during setup and then vanished from the terminal picker. Empty results now re-probe on an exponential window (15s doubling to a 5min cap) while staying readable, so a missing distro is still visible to isKnownMissingDistro. WSL availability: isWslAvailable() latched false on any failure via a bare catch, so one slow wsl.exe activation disabled WSL for the whole session. Failures are now classified — a numeric exit status or ENOENT is answer-shaped and holds for 10min, anything else (timeout, spawn failure) retries after 45s — and both back off per consecutive failure, mirroring isPwshAvailable. Windows-only: every changed path is behind an existing process.platform check, so macOS and Linux behaviour is unchanged.