From 600fe338f7ad7753d85e33787215665cb5d84d6c Mon Sep 17 00:00:00 2001 From: Daniel Imms <2193314+Tyriar@users.noreply.github.com> Date: Thu, 31 Mar 2022 12:53:54 -0700 Subject: [PATCH] Don't block Pseudoterminal-based terminals launching without backend Fixes #144729 --- .../workbench/contrib/terminal/browser/terminalInstance.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts index 137fa8d9d3fdc..19ebe38215439 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalInstance.ts @@ -446,10 +446,15 @@ export class TerminalInstance extends Disposable implements ITerminalInstance { this._xtermReadyPromise.then(async () => { // Wait for a period to allow a container to be ready await this._containerReadyBarrier.wait(); - if (this._configHelper.config.shellIntegration?.enabled && !this.shellLaunchConfig.executable) { + + // Resolve the executable ahead of time if shell integration is enabled, this should not + // be done for custom PTYs as that would cause extension Pseudoterminal-based terminals + // to hang in resolver extensions + if (!this.shellLaunchConfig.customPtyImplementation && this._configHelper.config.shellIntegration?.enabled && !this.shellLaunchConfig.executable) { const os = await this._processManager.getBackendOS(); this.shellLaunchConfig.executable = (await this._terminalProfileResolverService.getDefaultProfile({ remoteAuthority: this.remoteAuthority, os })).path; } + await this._createProcess(); // Re-establish the title after reconnect