electron/patches/node/fix_don_t_use_node-controlled_preparestacktrace.patch

33 lines
1.4 KiB
Diff
Raw Normal View History

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shelley Vohr <shelley.vohr@gmail.com>
Date: Thu, 17 Oct 2019 15:15:12 -0700
Subject: fix: don't use node-controlled prepareStackTrace
At the moment, Electron uses the v8 version of Error.prepareStackTrace as
defined in v7.9.74 (where https://crbug.com/v8/7848 has been fixed) and
not the one polyfilled by Node.js. As a result, we were experiencing failures
in parallel/test-buffer-constructor-outside-node-modules.js because
the polyfilled prepareStackTrace was not being run and thus code
inside that function would never be executed.
Upstreamed at https://github.com/nodejs/node/pull/30014.
diff --git a/lib/internal/util.js b/lib/internal/util.js
index 58502f3b7a7a937c896ff6d32a90a45c6912e3b3..e91362cc3a8a6c5d2462a017f177bebfd607a850 100644
--- a/lib/internal/util.js
+++ b/lib/internal/util.js
@@ -340,10 +340,10 @@ function isInsideNodeModules() {
// the perf implications should be okay.
getStructuredStack = runInNewContext(`(function() {
Error.stackTraceLimit = Infinity;
+ Error.prepareStackTrace = (err, trace) => trace;
+
return function structuredStack() {
- const e = new Error();
- overrideStackTrace.set(e, (err, trace) => trace);
- return e.stack;
+ return new Error().stack;
};
})()`, { overrideStackTrace }, { filename: 'structured-stack' });
}