1234567891011121314151617181920212223242526272829303132333435363738 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Shelley Vohr <[email protected]>
- Date: Thu, 16 Nov 2023 16:48:10 +0100
- Subject: feat: optionally prevent calling V8::EnableWebAssemblyTrapHandler
- V8::EnableWebAssemblyTrapHandler can be called only once or it will
- hard crash. We need to prevent Node.js calling it in the event it has
- already been called.
- This should be upstreamed.
- diff --git a/src/node.cc b/src/node.cc
- index 3e4f1b5d730865fae61f8bfbc58c14c6a59fb33a..7478ef81eb9b275eb5f45b528582e5bbd30e60ec 100644
- --- a/src/node.cc
- +++ b/src/node.cc
- @@ -650,6 +650,7 @@ static void PlatformInit(ProcessInitializationFlags::Flags flags) {
- #endif
- }
- #endif // defined(_WIN32)
- + if (!(flags & ProcessInitializationFlags::kNoEnableWasmTrapHandler))
- V8::EnableWebAssemblyTrapHandler(false);
- #endif // NODE_USE_V8_WASM_TRAP_HANDLER
- }
- diff --git a/src/node.h b/src/node.h
- index e55256996f2c85b0ae3854cbd1b83ca88a3e22cb..76e2459eceed127e69c686f26fd5bd369b81f1af 100644
- --- a/src/node.h
- +++ b/src/node.h
- @@ -275,6 +275,10 @@ enum Flags : uint32_t {
- kNoInitializeCppgc = 1 << 13,
- // Initialize the process for predictable snapshot generation.
- kGeneratePredictableSnapshot = 1 << 14,
- + // Do not initialize the Web Assembly trap handler. This is used by
- + // embedders to account for the case where it may already have been
- + // initialized - calling it more than once will hard crash.
- + kNoEnableWasmTrapHandler = 1 << 15,
-
- // Emulate the behavior of InitializeNodeWithArgs() when passing
- // a flags argument to the InitializeOncePerProcess() replacement
|