diff --git a/patches/exec-argv.diff b/patches/exec-argv.diff new file mode 100644 index 00000000..d16a446b --- /dev/null +++ b/patches/exec-argv.diff @@ -0,0 +1,17 @@ +Preserve process.execArgv + +This ensures flags like --prof are passed down so we can profile everything. + +Index: code-server/lib/vscode/src/vs/server/node/extensionHostConnection.ts +=================================================================== +--- code-server.orig/lib/vscode/src/vs/server/node/extensionHostConnection.ts ++++ code-server/lib/vscode/src/vs/server/node/extensionHostConnection.ts +@@ -228,7 +228,7 @@ export class ExtensionHostConnection { + + public async start(startParams: IRemoteExtensionHostStartParams): Promise { + try { +- let execArgv: string[] = []; ++ let execArgv: string[] = process.execArgv ? process.execArgv.filter(a => !/^--inspect(-brk)?=/.test(a)) : []; + if (startParams.port && !(process).pkg) { + execArgv = [`--inspect${startParams.break ? '-brk' : ''}=${startParams.port}`]; + } diff --git a/patches/heartbeat.diff b/patches/heartbeat.diff index 3208b6c3..4a7125a7 100644 --- a/patches/heartbeat.diff +++ b/patches/heartbeat.diff @@ -15,7 +15,7 @@ Index: code-server/lib/vscode/src/vs/base/parts/ipc/common/ipc.net.ts export const enum SocketDiagnosticsEventType { Created = 'created', -@@ -828,6 +829,19 @@ export class PersistentProtocol implemen +@@ -829,6 +830,19 @@ export class PersistentProtocol implemen this._socketDisposables.push(this._socketWriter); this._socketReader = new ProtocolReader(this._socket); this._socketDisposables.push(this._socketReader); diff --git a/patches/series b/patches/series index 8b7cc28e..40ebf270 100644 --- a/patches/series +++ b/patches/series @@ -21,3 +21,4 @@ telemetry.diff display-language.diff cli-window-open.diff heartbeat.diff +exec-argv.diff diff --git a/src/node/wrapper.ts b/src/node/wrapper.ts index cf64f574..dde60346 100644 --- a/src/node/wrapper.ts +++ b/src/node/wrapper.ts @@ -317,8 +317,7 @@ export class ParentProcess extends Process { } private spawn(): cp.ChildProcess { - // Use spawn (instead of fork) to use the new binary in case it was updated. - return cp.spawn(process.argv[0], process.argv.slice(1), { + return cp.fork(path.join(__dirname, "entry"), { env: { ...process.env, CODE_SERVER_PARENT_PID: process.pid.toString(),