Tracking issue: support of builtins and V8 issues in run-time user-land snapshots #44014
Open
Description
opened on Jul 28, 2022
This issue is opened to track known bugs and limitations of the run-time user-land snapshot.
Currently known limitations/bugs in Node.js builtins:
- Support modules that generate system requests e.g. net, http (without supporting the snapshotting of those requests, which we can't resurrect. But user should be able to snapshot the application after all pending requests are completed).
- Certain global event listeners on the
process
object need to be removed during snapshot serialization, and re-installed during deserialization - Support user-land modules
- Integration with SEA (Single Executable Application): src,doc: Experimental support for SEA #42334
- Support of more embedder objects and bindings: Support Node.js embedder objects and bindings in the snapshot #37476
- Support diagnostics channels: src: support WeakReference, diagnostics_channel and net in the snapshot #44193
- Support vm contexts
- Support workers
Currently known limitations/bugs that are being fixed in the V8 upstream:
- V8 hits a DCHECK when deserializing certain mutated globals, e.g.
Error.stackTraceLimit
(it should work fine in the release build, however): https://bugs.chromium.org/p/v8/issues/detail?id=12772 (fix in https://chromium-review.googlesource.com/c/v8/v8/+/3319481) (switch to bootstrap: fixup Error.stackTraceLimit for user-land snapshot #44203) - Layout of V8's read-only heap can be inconsistent after deserialization, resulting in memory corruption: snapshot cause EXC_BAD_ACCESS #40832 & https://bugs.chromium.org/p/v8/issues/detail?id=12921 (fixed)
Activity