Repository navigation
V8 CI build error on ppc #52661
Copy link
Copy link
Closed
Labels
buildIssues and PRs related to Node.js builds or CI infrastructure.Issues and PRs related to Node.js builds or CI infrastructure.ppcIssues and PRs related to the Power architecture.Issues and PRs related to the Power architecture.v8 engineIssues and PRs related to the V8 dependency.Issues and PRs related to the V8 dependency.
Description
@nodejs/platform-ppc
We missed it in the 12.4 upgrade PR.
https://ci.nodejs.org/job/node-test-commit-v8-linux/5914/nodes=rhel8-ppc64le,v8test=v8test/
21:19:30 FAILED: obj/v8_base_without_compiler/turboshaft-graph-interface.o
21:19:30 ccache g++ -MD -MF obj/v8_base_without_compiler/turboshaft-graph-interface.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_OZONE=1 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_NONE -D_GLIBCXX_ASSERTIONS=1 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64 -DENABLE_GDB_JIT_INTERFACE -DV8_INTL_SUPPORT -DV8_USE_EXTERNAL_STARTUP_DATA -DV8_ATOMIC_OBJECT_FIELD_WRITES -DV8_ENABLE_LAZY_SOURCE_POSITIONS -DV8_SHARED_RO_HEAP -DV8_WIN64_UNWINDING_INFO -DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH -DV8_ENABLE_SPARKPLUG -DV8_ENABLE_TURBOFAN -DV8_ENABLE_WEBASSEMBLY -DV8_ENABLE_CONTINUATION_PRESERVED_EMBEDDER_DATA -DV8_ALLOCATION_FOLDING -DV8_ALLOCATION_SITE_TRACKING -DV8_ADVANCED_BIGINT_ALGORITHMS -DV8_USE_ZLIB -DV8_ENABLE_MAGLEV_GRAPH_PRINTER -DV8_ENABLE_EXTENSIBLE_RO_SNAPSHOT -DV8_DEPRECATION_WARNINGS -DV8_IMMINENT_DEPRECATION_WARNINGS -DCPPGC_SLIM_WRITE_BARRIER -DV8_TARGET_ARCH_PPC64 -DV8_TARGET_ARCH_PPC_LE -DV8_HAVE_TARGET_OS -DV8_TARGET_OS_LINUX -DABSL_ALLOCATOR_NOTHROW=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../include -I../../third_party/abseil-cpp -Igen/include -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -I../../third_party/fp16/src/include -I../../third_party/zlib -Wall -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -Wno-comments -Wno-packed-not-aligned -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Werror -fno-ident -fno-strict-aliasing -fstack-protector -funwind-tables -fPIC -pipe -pthread -m64 -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -fno-omit-frame-pointer -g0 -ffp-contract=off -Wno-invalid-offsetof -Wno-strict-overflow -Wno-return-type -Wno-int-in-bool-context -Wno-deprecated -Wno-stringop-overflow -Wno-stringop-overread -Wno-restrict -Wno-array-bounds -Wno-nonnull -O3 -fdata-sections -ffunction-sections -fno-math-errno -fvisibility=default -Wno-narrowing -Wno-class-memaccess -std=gnu++2a -fno-exceptions -fno-rtti -c ../../src/wasm/turboshaft-graph-interface.cc -o obj/v8_base_without_compiler/turboshaft-graph-interface.o
21:19:30 In file included from ../../src/wasm/turboshaft-graph-interface.h:13,
21:19:30 from ../../src/wasm/turboshaft-graph-interface.cc:5:
21:19:30 ../../src/compiler/turboshaft/assembler.h: In static member function ‘static _Res std::_Function_handler<_Res(_ArgTypes ...), _Functor>::_M_invoke(const std::_Any_data&, _ArgTypes&& ...) [with _Res = v8::internal::compiler::turboshaft::V<v8::internal::compiler::turboshaft::WordWithBits<32> >; _Functor = v8::internal::wasm::TurboshaftGraphBuildingInterface::ArrayFillImpl(v8::internal::wasm::WasmGraphBuilderBase::V<v8::internal::HeapObject>, v8::internal::wasm::WasmGraphBuilderBase::OpIndex, v8::internal::wasm::WasmGraphBuilderBase::OpIndex, v8::internal::wasm::WasmGraphBuilderBase::OpIndex, const v8::internal::wasm::ArrayType*, bool)::<lambda()>; _ArgTypes = {}]’:
21:19:30 ../../src/compiler/turboshaft/assembler.h:680:16: error: ‘<anonymous>’ is used uninitialized in this function [-Werror=uninitialized]
21:19:30 680 | return Get();
21:19:30 | ^
21:19:30 At global scope:
21:19:30 cc1plus: note: unrecognized command-line option ‘-Wno-stringop-overread’ may have been intended to silence earlier diagnostics
21:19:30 cc1plus: all warnings being treated as errors
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
buildIssues and PRs related to Node.js builds or CI infrastructure.Issues and PRs related to Node.js builds or CI infrastructure.ppcIssues and PRs related to the Power architecture.Issues and PRs related to the Power architecture.v8 engineIssues and PRs related to the V8 dependency.Issues and PRs related to the V8 dependency.
Activity
miladfarca commentedon Apr 24, 2024
This doesn't happen on our gcc 12 compilers, i'm assuming you are using 10 for ppc? probably related to this bug:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86465
richardlau commentedon Apr 24, 2024
Yes, we're currently still using gcc-10 and C++17 (
-std=gnu++17. for Node.js). The V8 build is running with-std=gnu++2a(C++20).FWIW I've been experimenting with gcc-toolset-12 in richardlau-node-test-commit-v8-linux. The build on
mainfrom yesterday (today's is still in progress) succeeded with gcc 12: https://ci.nodejs.org/job/richardlau-node-test-commit-v8-linux/nodes=rhel8-ppc64le,v8test=v8test/589/richardlau commentedon Apr 25, 2024
I ran some Node.js builds based on
main(91dc8c9) plus commits to use C++20 but these still succeed with gcc-toolset-10:-std=gnu++20(ref: build: compile with C++20 support #45427): https://ci.nodejs.org/job/node-test-commit-plinux/53061/-std=gnu++2a(same as the V8 CI): https://ci.nodejs.org/job/node-test-commit-plinux/53063/so there's some other flag difference between the V8 and Node.js builds causing the compilation error to show up in the V8 one but not in the Node.js one when gcc-toolset-10 is used.
targos commentedon Apr 25, 2024
Isn't the main difference that V8 builds use Clang?
richardlau commentedon Apr 25, 2024
AFAIK not on ppc64le. You can see in the quoted compile failure in #52661 (comment) that it's executed
ccache g++which would be gcc from the gcc-toolset we select inselect-compiler.sh.richardlau commentedon Apr 29, 2024
The reason the Node.js V8 CI fails with gcc 10 but the Node.js CI does not is because the V8 build passes
-Werrorand-Wallto enable all warnings (with additional flags to turn some of the warning off) and fail on error while the Node.js build does not. Adding-Wallor just-Wuninitializedto the Node.js compile command line flags the same warning, and adding-Werrorcauses the build to fail.richardlau commentedon May 1, 2024
This may be related to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86465. Dropping optimization to a lower level makes the warning go away (i.e. we get the warning with
-O3but not-O2or-O1).@miladfarca has submitted https://crrev.com/c/5503350 upstream which also makes the warning go away.
https://ci.nodejs.org/job/node-test-commit-v8-linux/5950/ passed with 2c30d3d.
deps: V8: cherry-pick f6bef09b3b0a
deps: V8: cherry-pick f6bef09b3b0a
deps: V8: cherry-pick f6bef09b3b0a
deps: V8: cherry-pick f6bef09b3b0a