You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
(terminal): the main process dies of heap corruption inside the bundled ConPTY #405
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.
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:electron.exe.1780electron.exe.624electron.exe.9256electron.exe.22740Switchboard.exe.4996ntdll+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.dllis node-pty's bundled OpenConsole one (useConptyDll, v0.0.46), not the inbox ConPTY.[shell] profile=auto … bash.exeat 20:38:06 and 20:38:09) and ~4 s after a rendererxterm.js Uncaught TypeError: Cannot read properties of undefined (reading 'dimensions').terminal-resizepassescols/rowsunvalidated toresizePty(pty-ops.js~37, a barepty.resizein a try/catch that cannot catch a native fault); spawn sizes go throughnormalizePtySize(pty-size.js), resize does not.Not known yet
Which operation (spawn, resize, close) frees the corrupted block. Next: symbolise the dumps (
conpty.pdbships in the node-pty prebuilds), and reproduce in an isolated instance by opening/closing panel shells quickly while resizing.