Repository navigation
Closed
Labels
single-executableIssues and PRs related to single-executable applications.Issues and PRs related to single-executable applications.snapshotIssues and PRs related to the startup snapshot.Issues and PRs related to the startup snapshot.
Description
Version
v22.11.0
Platform
Darwin Mac.lan 24.1.0 Darwin Kernel Version 24.1.0: Thu Oct 10 21:03:11 PDT 2024; root:xnu-11215.41.3~2/RELEASE_ARM64_T6020 arm64
Subsystem
sea
What steps will reproduce the bug?
Generate a SEA and start a worker thread in it
How often does it reproduce? Is there a required condition?
Always
What is the expected behavior? Why is that the expected behavior?
Thread can be started.
What do you see instead?
Native stack trace
Additional information
# ./out.bin[76089]: MaybeLocal<v8::Value> node::StartExecution(node::Environment *, node::StartExecutionCallback) at ../src/node.cc:378
# Assertion failed: !(sea.use_snapshot()) || (!env->snapshot_deserialize_main().IsEmpty())
----- Native stack trace -----
1: 0x1006b3778 node::Assert(node::AssertionInfo const&) [/Users/yanlong.wang/out.bin]
2: 0x1022b7664 node::StartExecution(node::Environment*, std::__1::function<v8::MaybeLocal<v8::Value> (node::StartExecutionCallbackInfo const&)>) (.cold.1) [/Users/yanlong.wang/out.bin]
3: 0x10066dc04 node::StartExecution(node::Environment*, std::__1::function<v8::MaybeLocal<v8::Value> (node::StartExecutionCallbackInfo const&)>) [/Users/yanlong.wang/out.bin]
4: 0x1005d6460 node::LoadEnvironment(node::Environment*, std::__1::function<v8::MaybeLocal<v8::Value> (node::StartExecutionCallbackInfo const&)>, std::__1::function<void (node::Environment*, v8::Local<v8::Value>, v8::Local<v8::Value>)>) [/Users/yanlong.wang/out.bin]
5: 0x1007a48bc node::worker::Worker::Run() [/Users/yanlong.wang/out.bin]
6: 0x1007a8b0c node::worker::Worker::StartThread(v8::FunctionCallbackInfo<v8::Value> const&)::$_3::__invoke(void*) [/Users/yanlong.wang/out.bin]
7: 0x192a832e4 _pthread_start [/usr/lib/system/libsystem_pthread.dylib]
8: 0x192a7e0fc thread_start [/usr/lib/system/libsystem_pthread.dylib]
[1] 76089 abort ./out.bin
Metadata
Metadata
Assignees
Labels
single-executableIssues and PRs related to single-executable applications.Issues and PRs related to single-executable applications.snapshotIssues and PRs related to the startup snapshot.Issues and PRs related to the startup snapshot.
Activity
nomagick commentedon Nov 29, 2024
This also breaks the esm loader hooks because it also runs in a thread.
nomagick commentedon Nov 30, 2024
Looks like here:
node/src/node.cc
Lines 322 to 350 in 03ec900
joyeecheung commentedon Dec 3, 2024
Hmm, looks like we just need to skip the SEA stuff for worker threads during bootstrap, since that's meant for the main thread anyway.
sea: only assert snapshot main function for main threads
sea: only assert snapshot main function for main threads
sea: only assert snapshot main function for main threads
sea: only assert snapshot main function for main threads