Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Canary build crash on M1 mac (node_mksnapshot) #226

Closed
targos opened this issue May 24, 2022 · 6 comments
Closed

Canary build crash on M1 mac (node_mksnapshot) #226

targos opened this issue May 24, 2022 · 6 comments

Comments

@targos
Copy link
Member

targos commented May 24, 2022

[1/6] ACTION node: node_mksnapshot_9b7a2d2290b02e76d66661df74749f56
FAILED: gen/node_snapshot.cc
cd ../../; export BUILT_FRAMEWORKS_DIR=/Users/targos/git/nodejs/canary/out/Release; export BUILT_PRODUCTS_DIR=/Users/targos/git/nodejs/canary/out/Release; export CONFIGURATION=Release; export EXECUTABLE_NAME=node; export EXECUTABLE_PATH=node; export FULL_PRODUCT_NAME=node; export PRODUCT_NAME=node; export PRODUCT_TYPE=com.apple.product-type.tool; export SDKROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk; export SRCROOT=/Users/targos/git/nodejs/canary/out/Release/../../; export SOURCE_ROOT="${SRCROOT}"; export TARGET_BUILD_DIR=/Users/targos/git/nodejs/canary/out/Release; export TEMP_DIR="${TMPDIR}"; export XCODE_VERSION_ACTUAL=1340;out/Release/node_mksnapshot out/Release/gen/node_snapshot.cc


#
# Fatal error in , line 0
# Check failed: 12 == (*__error()).
#
#
#
#FailureMessage Object: 0x16ae75e28
 1: 0x10549b058 node::NodePlatform::GetStackTracePrinter()::$_3::__invoke() [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
 2: 0x10604e36c V8_Fatal(char const*, ...) [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
 3: 0x106058244 v8::base::OS::SetPermissions(void*, unsigned long, v8::base::OS::MemoryPermission) [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
 4: 0x105a67a80 v8::internal::MemoryAllocator::PartialFreeMemory(v8::internal::BasicMemoryChunk*, unsigned long, unsigned long, unsigned long) [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
 5: 0x105a93f90 v8::internal::Page::ShrinkToHighWaterMark() [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
 6: 0x105a7a768 v8::internal::PagedSpaceBase::ShrinkImmortalImmovablePages() [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
 7: 0x105a0dbdc v8::internal::Heap::NotifyDeserializationComplete() [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
 8: 0x10599bb78 v8::internal::Isolate::Init(v8::internal::SnapshotData*, v8::internal::SnapshotData*, v8::internal::SnapshotData*, bool) [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
 9: 0x10599c258 v8::internal::Isolate::InitWithSnapshot(v8::internal::SnapshotData*, v8::internal::SnapshotData*, v8::internal::SnapshotData*, bool) [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
10: 0x105de8cf0 v8::internal::Snapshot::Initialize(v8::internal::Isolate*) [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
11: 0x10584d7d4 v8::SnapshotCreator::SnapshotCreator(v8::Isolate*, long const*, v8::StartupData*) [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
12: 0x1054ab054 node::SnapshotBuilder::Generate(node::SnapshotData*, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >) [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
13: 0x1054abbf4 node::SnapshotBuilder::Generate(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >) [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
14: 0x10535a554 BuildSnapshot(int, char**) [/Users/targos/git/nodejs/canary/out/Release/node_mksnapshot]
15: 0x109ec108c
/bin/sh: line 1: 17447 Trace/BPT trap: 5       out/Release/node_mksnapshot out/Release/gen/node_snapshot.cc

/cc @nodejs/v8 @joyeecheung

@bnoordhuis
Copy link
Member

It's this check:

https://github.com/nodejs/node/blob/3921b896e55d9beb3921f3dcd9f245e3352f09f9/deps/v8/src/base/platform/platform-posix.cc#L478

And the call comes from here:

https://github.com/nodejs/node/blob/3921b896e55d9beb3921f3dcd9f245e3352f09f9/deps/v8/src/heap/memory-allocator.cc#L407-L415

V8 is shrinking an executable memory mapping and moving down the guard page. My hunch is the M1 won't let you change the permissions from PROT_READ+PROT_EXEC to PROT_NONE.

@targos
Copy link
Member Author

targos commented May 24, 2022

@targos
Copy link
Member Author

targos commented Jun 26, 2022

Can't reproduce anymore.

@targos targos closed this as completed Jun 26, 2022
@dio
Copy link

dio commented Sep 26, 2022

@targos sorry, did you change the caller? Or updating the V8 version? We are experiencing the same on Envoy: envoyproxy/envoy#23243. Thanks!

@targos
Copy link
Member Author

targos commented Sep 26, 2022

It just didn't reproduce with newer V8 versions.

@dio
Copy link

dio commented Sep 27, 2022

As a reference, this was fixed by: chromium-review.googlesource.com/c/v8/v8/+/3700352.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants