Closed
Description
Version
main
Platform
Linux 5469246cac8b 6.5.0-1025-azure #26~22.04.1-Ubuntu SMP Thu Jul 11 22:33:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Subsystem
No response
What steps will reproduce the bug?
- Clone https://gist.github.com/codebytere/3dedc548edcc0cc218d1ec85d8b61b02
- Enter the directory and install modules with
npm i
- Use an asan-enabled Node.js build to run the file
- Observe ASAN crash
How often does it reproduce? Is there a required condition?
Every time.
What is the expected behavior? Why is that the expected behavior?
No crash.
What do you see instead?
=================================================================
==625312==ERROR: AddressSanitizer: container-overflow on address 0x7bf653f0e7b7 at pc 0x5891de703a35 bp 0x7fffc7b5e470 sp 0x7fffc7b5e468
READ of size 32 at 0x7bf653f0e7b7 thread T0
#0 0x5891de703a34 in load third_party/electron_node/deps/simdjson/simdjson.cpp:14372:14
#1 0x5891de703a34 in simd8 third_party/electron_node/deps/simdjson/simdjson.cpp:14525:61
#2 0x5891de703a34 in copy_and_find third_party/electron_node/deps/simdjson/simdjson.cpp:14699:18
#3 0x5891de703a34 in parse_string third_party/electron_node/deps/simdjson/simdjson.cpp:19596:21
#4 0x5891de703a34 in simdjson::haswell::dom_parser_implementation::parse_string(unsigned char const*, unsigned char*, bool) const third_party/electron_node/deps/simdjson/simdjson.cpp:20193:10
#5 0x5891de1bb79f in unescape third_party/electron_node/deps/simdjson/simdjson.h:49904:34
#6 0x5891de1bb79f in unescape third_party/electron_node/deps/simdjson/simdjson.h:48874:18
#7 0x5891de1bb79f in unescape third_party/electron_node/deps/simdjson/simdjson.h:50092:15
#8 0x5891de1bb79f in unescape third_party/electron_node/deps/simdjson/simdjson.h:50130:16
#9 0x5891de1bb79f in get_string third_party/electron_node/deps/simdjson/simdjson.h:51535:32
#10 0x5891de1bb79f in get_string<std::__Cr::optional<std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> > > > third_party/electron_node/deps/simdjson/simdjson.h:51540:14
#11 0x5891de1bb79f in get_string<std::__Cr::optional<std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char> > > > third_party/electron_node/deps/simdjson/simdjson.h:50528:15
#12 0x5891de1bb79f in node::modules::BindingData::GetPackageJSON(node::Realm*, std::__Cr::basic_string_view<char, std::__Cr::char_traits<char>>, node::modules::BindingData::ErrorContext*) third_party/electron_node/src/node_modules.cc:162:17
#13 0x5891de1c0b8f in node::modules::BindingData::ReadPackageJSON(v8::FunctionCallbackInfo<v8::Value> const&) third_party/electron_node/src/node_modules.cc:271:23
#14 0x5891d61e586d in Builtins_CallApiCallbackGeneric setup-isolate-deserialize.cc
#15 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#16 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#17 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#18 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#19 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#20 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#21 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#22 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#23 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#24 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#25 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#26 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#27 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#28 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#29 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#30 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#31 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#32 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#33 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#34 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#35 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#36 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#37 0x5891d61e0fdb in Builtins_JSEntryTrampoline setup-isolate-deserialize.cc
#38 0x5891d61e0d1e in Builtins_JSEntry setup-isolate-deserialize.cc
#39 0x5891d11e9fc3 in Call v8/src/execution/simulator.h:191:12
#40 0x5891d11e9fc3 in v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) v8/src/execution/execution.cc:420:22
#41 0x5891d11e8c4a in v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) v8/src/execution/execution.cc:506:10
#42 0x5891d0976e50 in v8::Function::Call(v8::Isolate*, v8::Local<v8::Context>, v8::Local<v8::Value>, int, v8::Local<v8::Value>*) v8/src/api/api.cc:5601:7
#43 0x5891de04d430 in CompileAndCall third_party/electron_node/src/node_builtins.cc:497:14
#44 0x5891de04d430 in node::builtins::BuiltinLoader::CompileAndCall(v8::Local<v8::Context>, char const*, node::Realm*) third_party/electron_node/src/node_builtins.cc:481:10
#45 0x5891de25c7f8 in node::Realm::ExecuteBootstrapper(char const*) third_party/electron_node/src/node_realm.cc:161:32
#46 0x5891ddfd9ba0 in node::StartExecution(node::Environment*, char const*) third_party/electron_node/src/node.cc:297:35
#47 0x5891ddfd96bc in node::StartExecution(node::Environment*, std::__Cr::function<v8::MaybeLocal<v8::Value> (node::StartExecutionCallbackInfo const&)>) third_party/electron_node/src/node.cc
#48 0x5891dde03a72 in node::LoadEnvironment(node::Environment*, std::__Cr::function<v8::MaybeLocal<v8::Value> (node::StartExecutionCallbackInfo const&)>, std::__Cr::function<void (node::Environment*, v8::Local<v8::Value>, v8::Local<v8::Value>)>) third_party/electron_node/src/api/environment.cc:534:10
#49 0x5891c9464568 in electron::NodeMain(int, char**) electron/shell/app/node_main.cc:287:5
#50 0x5891c945759a in main electron/shell/app/electron_main_linux.cc:34:12
#51 0x7e96559e2082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16
0x7bf653f0e7b7 is located 567 bytes inside of 616-byte region [0x7bf653f0e580,0x7bf653f0e7e8)
allocated by thread T0 here:
#0 0x5891c93fdbdd in operator new(unsigned long) /b/s/w/ir/cache/builder/src/third_party/llvm/compiler-rt/lib/asan/asan_new_delete.cpp:86:3
#1 0x5891c9d2876f in __libcpp_operator_new<unsigned long> third_party/libc++/src/include/new:277:10
#2 0x5891c9d2876f in __libcpp_allocate third_party/libc++/src/include/new:301:10
#3 0x5891c9d2876f in allocate third_party/libc++/src/include/__memory/allocator.h:103:32
#4 0x5891c9d2876f in __allocate_at_least<std::__Cr::allocator<char> > third_party/libc++/src/include/__memory/allocate_at_least.h:41:19
#5 0x5891c9d2876f in std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char>>::__shrink_or_extend(unsigned long) third_party/libc++/src/include/string
#6 0x5891de1ba698 in iterate third_party/electron_node/deps/simdjson/simdjson.h:49828:10
#7 0x5891de1ba698 in node::modules::BindingData::GetPackageJSON(node::Realm*, std::__Cr::basic_string_view<char, std::__Cr::char_traits<char>>, node::modules::BindingData::ErrorContext*) third_party/electron_node/src/node_modules.cc:107:33
#8 0x5891de1c0b8f in node::modules::BindingData::ReadPackageJSON(v8::FunctionCallbackInfo<v8::Value> const&) third_party/electron_node/src/node_modules.cc:271:23
#9 0x5891d61e586d in Builtins_CallApiCallbackGeneric setup-isolate-deserialize.cc
#10 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#11 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#12 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#13 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#14 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#15 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#16 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#17 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#18 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#19 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#20 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#21 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#22 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#23 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#24 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#25 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#26 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#27 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#28 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#29 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#30 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#31 0x5891d61e3a1d in Builtins_InterpreterEntryTrampoline setup-isolate-deserialize.cc
#32 0x5891d61e0fdb in Builtins_JSEntryTrampoline setup-isolate-deserialize.cc
#33 0x5891d61e0d1e in Builtins_JSEntry setup-isolate-deserialize.cc
#34 0x5891d11e9fc3 in Call v8/src/execution/simulator.h:191:12
#35 0x5891d11e9fc3 in v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) v8/src/execution/execution.cc:420:22
HINT: if you don't care about these errors you may set ASAN_OPTIONS=detect_container_overflow=0.
If you suspect a false positive see also: https://github.com/google/sanitizers/wiki/AddressSanitizerContainerOverflow.
SUMMARY: AddressSanitizer: container-overflow third_party/electron_node/deps/simdjson/simdjson.cpp:14372:14 in load
Shadow bytes around the buggy address:
0x7bf653f0e500: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7bf653f0e580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7bf653f0e600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7bf653f0e680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x7bf653f0e700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x7bf653f0e780: 00 00 00 00 02 fc[fc]fc fc fc fc fc fc fa fa fa
0x7bf653f0e800: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7bf653f0e880: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7bf653f0e900: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7bf653f0e980: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x7bf653f0ea00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==625312==ABORTING
ERROR Error: Command failed: /workspaces/gclient/src/out/Testing/electron index.js
Additional information
It appears potentially specific to the location of the main
key in package.json - so far I'm consistently able to reproduce this with cookie-signature
which has its main
entry at the bottom. I'm not yet sure what other main
entries could cause this, and have confirmed that moving main
nearer to the top fixes the crash.
Metadata
Metadata
Assignees
Labels
No labels