node
node copied to clipboard
[v18.x] backport startup performance patches
This is a backport of https://github.com/nodejs/node/pull/45659 and https://github.com/nodejs/node/pull/45849, the first two commits are specifically added for v18.x with the second one taken from https://github.com/nodejs/node/pull/44483.
Refs: https://github.com/nodejs/node/pull/46425
Review requested:
- [ ] @nodejs/loaders
- [ ] @nodejs/modules
- [ ] @nodejs/net
- [ ] @nodejs/startup
CI: https://ci.nodejs.org/job/node-test-pull-request/49253/
CI: https://ci.nodejs.org/job/node-test-pull-request/49281/
CI: https://ci.nodejs.org/job/node-test-pull-request/49282/
CI: https://ci.nodejs.org/job/node-test-pull-request/49415/
I cannot reproduce the snapshot test failures locally on similar platforms. It could be a flake, or maybe something wasn't backported properly for v18.x. Will need to wait until the CI is unlocked to do a bit more runs to find out.
I would love to land this in the v18.15.0 release <3, I was going to kick a CI for this but it needs a rebase first.
@joyeecheung It looks like this needs a rebase
Hi! What is the expected performance gain in startup with this PR?
hi @joyeecheung this PR needs rebasing in case we want to land it in v18.x
I took the time to rebase and adapt this.
CI: https://ci.nodejs.org/job/node-test-pull-request/55284/
@joyeecheung parallel/test-snapshot-gzip
fails when built with --shared
. Any idea?
I'd really like to see this land. It's making it difficult to backport other changes.
I'm on the test machine to investigate. The test is actually flaky. It fails ~5% of the runs
oops I missed the pings. It seems similar to what I was seeing in https://github.com/nodejs/node/pull/46425#issuecomment-1424358745 will need some stack trace to figure out what is going on
It segfaults:
$ NODE_TEST_MODE=verify NODE_TEST_FIXTURE=/home/iojs/build/workspace/node-test-commit-linux-containered/test/fixtures/person.jpg.gz out/Release/node --snapshot-blob=/home/iojs/tmp/.tmp.6/snapshot.blob test/fixtures/snapshot/decompress-gzip-sync.js
Segmentation fault (core dumped)
I'm installing gdb to get a stack trace.
Here's the full stack trace:
(gdb) bt
#0 0x000055cd8d06a589 in v8::internal::Deserializer<v8::internal::Isolate>::PostProcessNewJSReceiver(v8::internal::Map, v8::internal::Handle<v8::internal::JSReceiver>, v8::internal::JSReceiver, v8::internal::InstanceType, v8::internal::SnapshotSpace) ()
#1 0x000055cd8d06aaa1 in v8::internal::Deserializer<v8::internal::Isolate>::PostProcessNewObject(v8::internal::Handle<v8::internal::Map>, v8::internal::Handle<v8::internal::HeapObject>, v8::internal::SnapshotSpace) ()
#2 0x000055cd8d06dd77 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#3 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#4 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#5 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#6 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#7 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#8 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#9 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#10 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#11 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#12 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#13 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#14 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#15 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#16 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#17 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#18 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#19 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#20 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#21 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#22 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#23 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#24 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#25 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#26 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
---Type <return> to continue, or q <return> to quit---
#27 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#28 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#29 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#30 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#31 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#32 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#33 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#34 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#35 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#36 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#37 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#38 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#39 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#40 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#41 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#42 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#43 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#44 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#45 0x000055cd8d06c159 in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHandle<v8::internal::Isolate> >(unsigned char, v8::internal::SlotAccessorForHandle<v8::internal::Isolate>) ()
#46 0x000055cd8d06c790 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject() ()
#47 0x000055cd8d06dcad in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#48 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#49 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#50 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#51 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#52 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#53 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#54 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsig---Type <return> to continue, or q <return> to quit---
ned char, v8::internal::SlotAccessorForHeapObject) ()
#55 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#56 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#57 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#58 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#59 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#60 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#61 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#62 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#63 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#64 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#65 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#66 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#67 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#68 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#69 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#70 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#71 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#72 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#73 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#74 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#75 0x000055cd8d06c159 in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHandle<v8::internal::Isolate> >(unsigned char, v8::internal::SlotAccessorForHandle<v8::internal::Isolate>) ()
#76 0x000055cd8d06c790 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject() ()
#77 0x000055cd8d06dcad in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#78 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#79 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#80 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#81 0x000055cd8d06c159 in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHandle<v8::internal::Isolate> >(unsigned char, v8::internal::SlotAccessorForHandle<v8::internal::Isolate>) ()
---Type <return> to continue, or q <return> to quit---
#82 0x000055cd8d06c790 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject() ()
#83 0x000055cd8d06dcad in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#84 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#85 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#86 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#87 0x000055cd8d06c159 in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHandle<v8::internal::Isolate> >(unsigned char, v8::internal::SlotAccessorForHandle<v8::internal::Isolate>) ()
#88 0x000055cd8d06c790 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject() ()
#89 0x000055cd8d06dcad in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#90 0x000055cd8d06d0be in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHeapObject>(unsigned char, v8::internal::SlotAccessorForHeapObject) ()
#91 0x000055cd8d06dbe1 in v8::internal::Deserializer<v8::internal::Isolate>::ReadData(v8::internal::Handle<v8::internal::HeapObject>, int, int) ()
#92 0x000055cd8d06dd64 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject(v8::internal::SnapshotSpace) ()
#93 0x000055cd8d06c159 in int v8::internal::Deserializer<v8::internal::Isolate>::ReadSingleBytecodeData<v8::internal::SlotAccessorForHandle<v8::internal::Isolate> >(unsigned char, v8::internal::SlotAccessorForHandle<v8::internal::Isolate>) ()
#94 0x000055cd8d06c790 in v8::internal::Deserializer<v8::internal::Isolate>::ReadObject() ()
#95 0x000055cd8d065dbb in v8::internal::ContextDeserializer::Deserialize(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSGlobalProxy>, v8::DeserializeInternalFieldsCallback) ()
#96 0x000055cd8d065f5f in v8::internal::ContextDeserializer::DeserializeContext(v8::internal::Isolate*, v8::internal::SnapshotData const*, bool, v8::internal::Handle<v8::internal::JSGlobalProxy>, v8::DeserializeInternalFieldsCallback) ()
#97 0x000055cd8d094def in v8::internal::Snapshot::NewContextFromSnapshot(v8::internal::Isolate*, v8::internal::Handle<v8::internal::JSGlobalProxy>, unsigned long, v8::DeserializeInternalFieldsCallback) ()
#98 0x000055cd8cd4125b in v8::internal::Genesis::Genesis(v8::internal::Isolate*, v8::internal::MaybeHandle<v8::internal::JSGlobalProxy>, v8::Local<v8::ObjectTemplate>, unsigned long, v8::DeserializeInternalFieldsCallback, v8::MicrotaskQueue*) ()
#99 0x000055cd8cd42128 in v8::internal::Bootstrapper::CreateEnvironment(v8::internal::MaybeHandle<v8::internal::JSGlobalProxy>, v8::Local<v8::ObjectTemplate>, v8::ExtensionConfiguration*, unsigned long, v8::DeserializeInternalFieldsCallback, v8::MicrotaskQueue*) ()
#100 0x000055cd8ca7faf6 in v8::NewContext(v8::Isolate*, v8::ExtensionConfiguration*, v8::MaybeLocal<v8::ObjectTemplate>, v8::MaybeLocal<v8::Value>, unsigned long, v8::DeserializeInternalFieldsCallback, v8::MicrotaskQueue*) ()
#101 0x000055cd8ca7ff39 in v8::Context::FromSnapshot(v8::Isolate*, unsigned long, v8::DeserializeInternalFieldsCallback, v8::ExtensionConfiguration*, v8::MaybeLocal<v8::Value>, v8::MicrotaskQueue*) ()
#102 0x000055cd8c8bc685 in node::NodeMainInstance::CreateMainEnvironment(int*) ()
#103 0x000055cd8c8bc965 in node::NodeMainInstance::Run() ()
#104 0x000055cd8c82a777 in node::LoadSnapshotDataAndRun(node::SnapshotData const**, node::InitializationResult const*) ()
#105 0x000055cd8c82e607 in node::Start(int, char**) ()
#106 0x00007f9c9d615c87 in __libc_start_main (main=0x55cd8c79e020 <main>, argc=3, argv=0x7ffe54a0a3b8, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>, stack_end=0x7ffe54a0a3a8) at ../csu/libc-start.c:310
---Type <return> to continue, or q <return> to quit---
#107 0x000055cd8c7a5daa in _start ()
I think this needs some more in-depth debugging into the actual memory situation to figure out what's happening. In the mean time backporting https://chromium-review.googlesource.com/c/v8/v8/+/3793525 might make a difference
I could reproduce locally with --shared
with ~1% chances. This happens when deserializing the backing store of a typed array - I am fairly certain that https://chromium-review.googlesource.com/c/v8/v8/+/3813068 should fix it, but I haven't checked locally
I did a manual patching of https://chromium-review.googlesource.com/c/v8/v8/+/3813068 locally and the crash went away.
Amazing!
Cherry-picked the change.
CI: https://ci.nodejs.org/job/node-test-pull-request/55492/
V8 CI: https://ci.nodejs.org/job/node-test-commit-v8-linux/5653/
@joyeecheung (or anyone else) want to review that latest state?
Rubber stamp LGTM - I just realized that we have no --shared options in the stress test API, so we can probably only count on the main CI
Landed in 5f852cc9fe10...23069c34b261