Severe output delay (~3.5s) when using useConptyDll: true with PowerShell 7
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- node.js, powershell
- Ambito
- cli, operating-systems, performance
Direzione di ricerca
Inizia riproducendo il confronto dei tempi con useConptyDll impostato su true e false, usando il file incluso in node_modules/@homebridge/node-pty-prebuilt-multiarch/build/Release/conpty/conpty.dll. Confronta il primo batch di dati e il ritardo del prompt, quindi verifica se warmupConPtyDll modifica il risultato. Il lavoro è completato quando il ritardo di avvio di ConPTY incluso è stato identificato e corretto senza perdere il beneficio di stabilità IME segnalato.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Description
When using the bundled conpty.dll (useConptyDll: true), PowerShell 7 initialization output is
severely delayed compared to using the system ConPTY. The prompt appears ~3.5 seconds later, making
the terminal feel unresponsive.
Environment
- OS: Windows 11 Pro 10.0.22621
- node-pty version: @homebridge/node-pty-prebuilt-multiarch@0.13.1
- Shell: PowerShell 7.5.4 (pwsh.exe)
- Node.js version: v22.21.1
- Electron version: 28.0.0
Steps to Reproduce
- Create a PTY process with the following options:
const pty = require('node-pty');
const ptyProcess = pty.spawn('pwsh.exe', [], {
name: 'xterm-256color',
cols: 80,
rows: 30,
cwd: process.cwd(),
env: process.env,
useConpty: true,
useConptyDll: true // Using bundled conpty.dll
});
let firstDataTime = null;
let promptTime = null;
ptyProcess.onData((data) => {
if (!firstDataTime) {
firstDataTime = Date.now();
console.log('First data:', data.substring(0, 100));
}
if (data.includes('PS ') && !promptTime) {
promptTime = Date.now();
console.log('Prompt received after:', promptTime - firstDataTime, 'ms');
}
});
- Compare with system ConPTY by setting useConptyDll: false
Expected Behavior
PowerShell prompt should appear within ~300-500ms, similar to system ConPTY behavior.
Actual Behavior
With useConptyDll: true, the PowerShell prompt appears after ~3800ms, making the terminal feel very
slow to start.
Detailed Comparison
System ConPTY (useConptyDll: false)
First data received: 83 bytes
Content: [?25l[2J[HPowerShell 7.5.4\r\n]0;C:\Program Files\PowerShell\7\pwsh.exe[?25h
Prompt detected after: 340ms
Bundled ConPTY (useConptyDll: true)
First data received: 4 bytes
Content: [1t
Prompt detected after: 3815ms
Analysis
The key difference is:
- System ConPTY: First data batch contains PowerShell version info and initialization output (83
bytes), prompt arrives in 340ms - Bundled ConPTY: First data batch contains only an ANSI escape sequence [1t (4 bytes), then waits
~3.8 seconds before sending the actual PowerShell output
This suggests that the bundled conpty.dll has a different output buffering or synchronization
mechanism that causes severe delays in forwarding the shell's initialization output.
Impact
This makes the bundled ConPTY unusable for applications that need responsive terminal startup. We
initially wanted to use useConptyDll: true to fix an IME (Input Method Editor) candidate box
flickering issue, but the 3.8-second delay is unacceptable for user experience.
Questions
- Is this a known issue with the bundled conpty.dll?
- Are there any configuration options to control the output buffering behavior?
- What version of ConPTY is bundled, and could updating it help?
- Is there a way to get the IME stability benefits of bundled ConPTY without the output delay?
Additional Context
- The bundled conpty.dll is located at:
node_modules/@homebridge/node-pty-prebuilt-multiarch/build/Release/conpty/conpty.dll - File size: 109,104 bytes
- File date: Feb 28, 2025
- We've also tried the warmupConPtyDll() approach (spawning a dummy PTY at startup), but it doesn't
help with the per-terminal delay
Workaround
Currently using system ConPTY (useConptyDll: false) for fast startup, but this causes IME issues on
Windows (candidate box flickering during terminal output).
- Lingua principale
- TypeScript
- Stelle
- 2k
- Fork
- 337
- Merge medio
- 21h 58m
- PR unite (30g)
- 3
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/node-pty
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Windows: conin socket has no 'error' listener, so a failed pty write is an uncaught exception Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Tutte le issue di microsoft/node-pty
Issue simili
-
bug(cli): hapi doctor inline-media prints a fabricated B:\ helper-script path in packaged installs Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Crush Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
catppuccin/catppuccin#3125 ·
-
Add a SECURITY.md Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
ElementsProject/cln-application#167 · 1 commento · 1 reazione ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Quantco/pnpm-licenses#17 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100