diff --git a/patches/node/.patches b/patches/node/.patches index ff4777b37d88b..a6c2c52cef660 100644 --- a/patches/node/.patches +++ b/patches/node/.patches @@ -41,3 +41,4 @@ test_account_for_non-node_basename.patch lib_src_switch_buffer_kmaxlength_to_size_t.patch update_tests_after_increasing_typed_array_size.patch darwin_work_around_clock_jumping_back_in_time.patch +fix_do_not_register_the_esm_loader_in_renderer_processes.patch diff --git a/patches/node/fix_do_not_register_the_esm_loader_in_renderer_processes.patch b/patches/node/fix_do_not_register_the_esm_loader_in_renderer_processes.patch new file mode 100644 index 0000000000000..5dd6c2e95761d --- /dev/null +++ b/patches/node/fix_do_not_register_the_esm_loader_in_renderer_processes.patch @@ -0,0 +1,29 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Samuel Attard +Date: Thu, 25 Jun 2020 09:29:04 -0700 +Subject: fix: do not register the ESM loader in renderer processes + +Only one ESM loader can be registered per isolate, in renderer processes this should be blink. This patches node so that it won't register it's handler (overriding blinks) in non-browser processes. + +This has been upstreamed in: + * https://github.com/nodejs/node/pull/34060 + * https://github.com/nodejs/node/pull/34127 + +We can't easily rebase on that accepted solution here but we can as soon as we upgrade to +Node.js v14, since we need to leverage the new version of node::CreateEnvironment +introduced in https://github.com/nodejs/node/pull/30467. + +diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js +index b4a0f71af5853f427a10449b52509052fbe3facd..ba5b0b6e51bcddbc5b9dd9c31231585d61b131a0 100644 +--- a/lib/internal/bootstrap/pre_execution.js ++++ b/lib/internal/bootstrap/pre_execution.js +@@ -411,6 +411,9 @@ function initializeESMLoader() { + // Create this WeakMap in js-land because V8 has no C++ API for WeakMap. + internalBinding('module_wrap').callbackMap = new SafeWeakMap(); + ++ // Do not hook the ESM loader in renderer processes as it overrides blinks loader ++ if (typeof process.type === 'string' && process.type !== 'browser') return; ++ + const { + setImportModuleDynamicallyCallback, + setInitializeImportMetaObjectCallback diff --git a/vsts-arm-test-steps.yml b/vsts-arm-test-steps.yml index 1f93abf20ea4c..e5a4087af144c 100644 --- a/vsts-arm-test-steps.yml +++ b/vsts-arm-test-steps.yml @@ -73,9 +73,6 @@ steps: sudo gdk-pixbuf-query-loaders --update-cache cd src export ELECTRON_OUT_DIR=Default - unset ELECTRON_DISABLE_SANDBOX - sudo chown root out/Default/chrome-sandbox - sudo chmod 4755 out/Default/chrome-sandbox (cd electron && node script/yarn test -- --enable-logging) displayName: 'Run Electron tests' timeoutInMinutes: 20 diff --git a/vsts-arm32v7.yml b/vsts-arm32v7.yml index e9371511e2502..376a07eac4870 100644 --- a/vsts-arm32v7.yml +++ b/vsts-arm32v7.yml @@ -2,7 +2,7 @@ resources: containers: - container: arm32v7-test-container image: electronjs/build:arm32v7-697b894f36d127155e020f4e8ad4b2e5f6a09613 - options: --shm-size 128m --cap-add SYS_ADMIN + options: --shm-size 128m jobs: - job: Test_Arm32v7 diff --git a/vsts-arm64v8.yml b/vsts-arm64v8.yml index a134eb93386d7..767391fbb6099 100644 --- a/vsts-arm64v8.yml +++ b/vsts-arm64v8.yml @@ -2,7 +2,7 @@ resources: containers: - container: arm64v8-test-container image: electronjs/build:arm64v8-697b894f36d127155e020f4e8ad4b2e5f6a09613 - options: --shm-size 128m --cap-add SYS_ADMIN + options: --shm-size 128m jobs: - job: Test_Arm64