Skip to content

(terminal): the main process dies of heap corruption inside the bundled ConPTY #405

Description

@devsuitup

The main process dies with STATUS_HEAP_CORRUPTION (0xc0000374) inside a heap free called from the bundled ConPTY (useConptyDll). No JS error, no quit line in main.log — the app just disappears.

Measured (2026-10-01)

Five minidumps in %LOCALAPPDATA%\CrashDumps, same signature in all five:

Dump Time Process
electron.exe.1780 20:18:55 isolated live-test instance (repo worktree)
electron.exe.624 20:22:10 same
electron.exe.9256 20:27:14 same
electron.exe.22740 20:30:04 same
Switchboard.exe.4996 20:38:28 the installed v0.0.85, main process
  • Fault ntdll+0x117eb5, exception 0xc0000374. Raw stack scan (no symbols, no debugger on the machine): ntdll+0x96be5, ntdll+0x12058a (heap free/validation) ← conpty.dll+0x6126, +0x60b0 ← conpty.node+0x5941, +0x981e, +0x8138 ← the V8 native call.
  • conpty.dll is node-pty's bundled OpenConsole one (useConptyDll, v0.0.46), not the inbox ConPTY.
  • The four isolated crashes happened during a live test that repeatedly opened the file panel's shell ((terminal): a resize while another terminal's WebGL context starts can paint it blank #353 investigation). The installed app crashed ~2 s after a second bash spawn ([shell] profile=auto … bash.exe at 20:38:06 and 20:38:09) and ~4 s after a renderer xterm.js Uncaught TypeError: Cannot read properties of undefined (reading 'dimensions').
  • terminal-resize passes cols/rows unvalidated to resizePty (pty-ops.js ~37, a bare pty.resize in a try/catch that cannot catch a native fault); spawn sizes go through normalizePtySize (pty-size.js), resize does not.

Not known yet

Which operation (spawn, resize, close) frees the corrupted block. Next: symbolise the dumps (conpty.pdb ships in the node-pty prebuilds), and reproduce in an isolated instance by opening/closing panel shells quickly while resizing.

No activity

Activity on this issue will appear here.

Activity

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

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions