Cypress 15.21.1 binary crashes with SIGILL (invalid opcode) at a fixed offset on WSL2/WSLg
Current behavior
The Cypress binary (Electron 37.6.0) repeatedly crashes with SIGILL (signal 4, invalid opcode) when running on WSL2 with WSLg. It happened 10 times within ~24 hours (2026-09-14 13:15 – 2026-09-15 12:23).
The crash is deterministic in location: every time the trap is at the same offset in the Cypress executable (0x4a83146), across different PIDs and ASLR base addresses. This points to an intentional abort (CHECK() / IMMEDIATE_CRASH()) in Chromium/Electron, not to a CPU incompatibility (the CPU supports AVX2).
Kernel log (dmesg) from two of the crashes:
[ 7215.487754] traps: Cypress[2637] trap invalid opcode ip:58fc54b9a146 sp:7ffc4d869da0 error:0 in Cypress[4a83146,58fc52861000+92d3000]
[ 7215.487988] Cypress: Cypress: potentially unexpected fatal signal 4.
[ 7215.488355] CPU: 10 UID: 0 PID: 2637 Comm: Cypress Not tainted 6.18.33.2-microsoft-standard-WSL2 #1 PREEMPT(none)
[ 7215.492079] WSL (2645 - CaptureCrash): Capturing crash for pid: 30861, executable: !root!.cache!Cypress!15.21.1!Cypress!Cypress, signal: 4, port: 50005
[ 8937.271931] traps: Cypress[21391] trap invalid opcode ip:5ac44a188146 sp:7ffc9605cf00 error:0 in Cypress[4a83146,5ac447e4f000+92d3000]
[ 8937.272400] Cypress: Cypress: potentially unexpected fatal signal 4.
[ 8937.272426] CPU: 2 UID: 0 PID: 21391 Comm: Cypress Not tainted 6.18.33.2-microsoft-standard-WSL2 #1 PREEMPT(none)
[ 8937.274907] WSL (21399 - CaptureCrash): Capturing crash for pid: 41251, executable: !root!.cache!Cypress!15.21.1!Cypress!Cypress, signal: 4, port: 50005
Side effect: because WSL collects crash dumps by default, each crash produced a core dump in %LOCALAPPDATA%\Temp\wsl-crashes on the Windows host — up to 194 GB per dump (577 GB total for 10 dumps, on a VM with only 7 GB RAM), which filled the host's system drive to 99 %. The dump size itself is WSL behavior (see microsoft/WSL#41314), but it makes this crash especially harmful for WSL users.
Setup details:
- Cypress runs as
root(binary cache in/root/.cache/Cypress) - WSLg is active:
DISPLAY=:0,WAYLAND_DISPLAY=wayland-0 - Testing type: e2e, started via
cypress open --config-file cypress.config.ts
Desired behavior
Cypress should not crash. If Electron hits a fatal internal check (e.g. sandbox, GPU or Wayland/X11 display problems under WSLg), Cypress should print a readable error message explaining the cause instead of dying with SIGILL.
Test code to reproduce
Environment to reproduce:
- Windows 11 with WSL 2.7.14.0 and WSLg 1.0.73.2
- Ubuntu 24.04.3 LTS distro, logged in as
root - Install
[email protected]in an e2e project and runnpx cypress open(ornpx cypress run) - Cypress crashes with SIGILL after some time; check
dmesg | grep Cypress
Cypress Version
15.21.1 (Electron 37.6.0, bundled Node 22.19.0)
Debug Logs
Other
Environment details
- WSL version: 2.7.14.0
- Kernel: 6.18.33.2-2
- WSLg: 1.0.73.2
- MSRDC: 1.2.7214
- Direct3D: 1.611.1-81528511
- CPU: 13th Gen Intel Core i7-1355U (12 threads, AVX2), 7 GB RAM assigned to WSL
Possibly related
- #7045 – "The Test Runner unexpectedly exited via a exit event with signal SIGILL" (open, CI/Docker, often as root)
- #28559 – "SIGILL (invalid opcode) crash after Network.loadingFailed loop of death" (closed as stale, same symptom on Cypress 13)
- #23962 – SIGILL in Docker (closed as stale; maintainers asked to open a new issue for similar reports)
- microsoft/WSL#41552 – WSLg Weston SIGSEGV crash loop with the same WSLg version (1.0.73.2); a crashing compositor could trigger a fatal check in Electron
- microsoft/WSL#41314 – WSL crash collector writes huge Electron dumps to
%TEMP%\wsl-crashes
Source: cypress-io/cypress