Issue 75923
Summary Clang frontend crash (with reproducers) when building Nodejs 21.4.0 with Polly Parallelizer
Labels clang
Assignees
Reporter ms178
    With a recent Clang-18 snapshot (cd6e462d012f289cc4ec12927ca8198f9ed1469e), I've seen the following frontend crash:

```
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: clang++ -o /tmp/makepkg/nodejs/src/node/out/Release/obj.target/v8_libbase/deps/v8/src/base/ieee754.o ../deps/v8/src/base/ieee754.cc -D_GLIBCXX_USE_CXX11_ABI=1 -DNODE_OPENSSL_CONF_NAME=nodejs_conf -DICU_NO_USER_DATA_OVERRIDE -DV8_GYP_BUILD -DV8_TYPED_ARRAY_MAX_SIZE_IN_HEAP=64 -D__STDC_FORMAT_MACROS -DV8_TARGET_ARCH_X64 -DV8_HAVE_TARGET_OS -DV8_TARGET_OS_LINUX -DV8_EMBEDDER_STRING=\"-node.17\" -DENABLE_DISASSEMBLER -DV8_PROMISE_INTERNAL_FIELD_COUNT=1 -DV8_ENABLE_PRIVATE_MAPPING_FORK_OPTIMIZATION -DV8_SHORT_BUILTIN_CALLS -DOBJECT_PRINT -DV8_INTL_SUPPORT -DV8_ATOMIC_OBJECT_FIELD_WRITES -DV8_ENABLE_LAZY_SOURCE_POSITIONS -DV8_USE_SIPHASH -DV8_SHARED_RO_HEAP -DV8_WIN64_UNWINDING_INFO -DV8_ENABLE_REGEXP_INTERPRETER_THREADED_DISPATCH -DV8_USE_ZLIB -DV8_ENABLE_TURBOFAN -DV8_ENABLE_WEBASSEMBLY -DV8_ENABLE_JAVASCRIPT_PROMISE_HOOKS -DV8_ALLOCATION_FOLDING -DV8_ALLOCATION_SITE_TRACKING -DV8_ADVANCED_BIGINT_ALGORITHMS -DBUILDING_V8_BASE_SHARED -I../deps/v8 -I../deps/v8/include -pthread -Wno-unused-parameter -fPIC -Wno-return-type -Wno-invalid-offsetof -fno-strict-aliasing -m64 -m64 -O3 -fno-omit-frame-pointer -fdata-sections -ffunction-sections -O3 -fno-rtti -fno-exceptions -std=gnu++17 -MMD -MF /tmp/makepkg/nodejs/src/node/out/Release/.deps//tmp/makepkg/nodejs/src/node/out/Release/obj.target/v8_libbase/deps/v8/src/base/ieee754.o.d.raw -D_FORTIFY_SOURCE=0 -O3 -march=native -mtune=native -maes -mbmi2 -mpclmul -mllvm -inline-threshold=1000 -mllvm -polly -mllvm -polly-position=early -mllvm -polly-dependences-computeout=900000000 -mllvm -polly-detect-profitability-min-per-loop-insts=40 -mllvm -polly-tiling=true -mllvm -polly-prevect-width=256 -mllvm -polly-vectorizer=stripmine -mllvm -polly-invariant-load-hoisting -mllvm -polly-loopfusion-greedy -mllvm -polly-run-inliner -mllvm -polly-run-dce -mllvm -polly-enable-delicm=true -mllvm -polly -fmerge-all-constants -mllvm -polly-parallel -fopenmp -fopenmp-version=50 -mllvm -polly-omp-backend=LLVM -mllvm -polly-num-threads=36 -mllvm -polly-scheduling=dynamic -mllvm -polly-scheduling-chunksize=1 -mllvm -extra-vectorizer-passes -mllvm -enable-cond-stores-vec -mllvm -slp-vectorize-hor-store -mllvm -enable-loopinterchange -mllvm -enable-loop-distribute -mllvm -enable-unroll-and-jam -mllvm -enable-loop-flatten -mllvm -interleave-small-loop-scalar-reduction -mllvm -unroll-runtime-multi-exit -mllvm -aggressive-ext-opt -fno-math-errno -fno-trapping-math -falign-functions=32 -funroll-loops -fno-semantic-interposition -fcf-protection=none -mharden-sls=none -fomit-frame-pointer -mprefer-vector-width=256 -flto=thin -fwhole-program-vtables -fsplit-lto-unit -mllvm -adce-remove-loops -mllvm -enable-ext-tsp-block-placement -mllvm -enable-gvn-hoist -mllvm -enable-dfa-jump-thread -Wno-error -fgnuc-version=13.2.1 -ffp-contract=fast -fdata-sections -ffunction-sections -fno-unique-section-names -fsplit-machine-functions -freroll-loops -w -Wp,-U_GLIBCXX_ASSERTIONS -c
1.      <eof> parser at end of file
2. Optimizer
llvm-ar crsT /tmp/makepkg/nodejs/src/node/out/Release/obj.target/tools/v8_gypfiles/libv8_zlib.a @/tmp/makepkg/nodejs/src/node/out/Release/obj.target/tools/v8_gypfiles/libv8_zlib.a.ar-file-list
 #0 0x0000556913f91579 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) Signals.cpp:0:0
 #1 0x0000556913f91370 llvm::sys::CleanupOnSignal(unsigned long) (/home/marcus/llvm18/bin/clang-18+0xd591370)
 #2 0x0000556913f4c3f8 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0
 #3 0x0000556913f4c578 CrashRecoverySignalHandler(int) (.llvm.12110217104791804295) CrashRecoveryContext.cpp:0:0
 #4 0x00007f96c3223010 (/usr/lib/libc.so.6+0x223010)
 #5 0x000055691386ded1 llvm::po_iterator<llvm::MachineDominatorTree*, llvm::SmallPtrSet<llvm::DomTreeNodeBase<llvm::MachineBasicBlock>*, 8u>, false, llvm::GraphTraits<llvm::MachineDominatorTree*>>::po_iterator(llvm::DomTreeNodeBase<llvm::MachineBasicBlock>*) EarlyIfConversion.cpp:0:0
 #6 0x0000556914f0aaf1 polly::IslNodeBuilder::createForParallel(isl_ast_node*) IslNodeBuilder.cpp:0:0
 #7 0x0000556914f0d3fc polly::IslNodeBuilder::createFor(isl_ast_node*) (/home/marcus/llvm18/bin/clang-18+0xe50d3fc)
 #8 0x0000556914f0e6a5 polly::IslNodeBuilder::createBlock(isl_ast_node*) (/home/marcus/llvm18/bin/clang-18+0xe50e6a5)
 #9 0x0000556914ea0d1d generateCode(polly::Scop&, polly::IslAstInfo&, llvm::LoopInfo&, llvm::DominatorTree&, llvm::ScalarEvolution&, llvm::RegionInfo&) CodeGeneration.cpp:0:0
#10 0x0000556914ea0505 polly::CodeGenerationPass::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) (/home/marcus/llvm18/bin/clang-18+0xe4a0505)
#11 0x0000556914e9af5d llvm::detail::PassModel<polly::Scop, polly::CodeGenerationPass, llvm::PreservedAnalyses, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) RegisterPasses.cpp:0:0
#12 0x0000556914ed5dce llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) (/home/marcus/llvm18/bin/clang-18+0xe4d5dce)
#13 0x0000556914e99475 polly::FunctionToScopPassAdaptor<llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) RegisterPasses.cpp:0:0
#14 0x0000556914e99131 llvm::detail::PassModel<llvm::Function, polly::FunctionToScopPassAdaptor<llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) RegisterPasses.cpp:0:0
#15 0x000055691076962a llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/marcus/llvm18/bin/clang-18+0x9d6962a)
#16 0x0000556910768b0d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) AMDGPUTargetMachine.cpp:0:0
#17 0x0000556910a505fd llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/marcus/llvm18/bin/clang-18+0xa0505fd)
#18 0x0000556910a5030d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) AMDGPUTargetMachine.cpp:0:0
#19 0x0000556910fbd791 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/marcus/llvm18/bin/clang-18+0xa5bd791)
#20 0x00005569111dbc51 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#21 0x0000556910f37271 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (/home/marcus/llvm18/bin/clang-18+0xa537271)
#22 0x0000556910bb3780 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/marcus/llvm18/bin/clang-18+0xa1b3780)
#23 0x000055691078bf78 clang::ParseAST(clang::Sema&, bool, bool) (/home/marcus/llvm18/bin/clang-18+0x9d8bf78)
#24 0x00005569111fc6b0 clang::FrontendAction::Execute() (/home/marcus/llvm18/bin/clang-18+0xa7fc6b0)
#25 0x000055691120274e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/marcus/llvm18/bin/clang-18+0xa80274e)
#26 0x0000556911202c19 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/marcus/llvm18/bin/clang-18+0xa802c19)
#27 0x0000556911205978 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/marcus/llvm18/bin/clang-18+0xa805978)
#28 0x000055691120409d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#29 0x0000556911203f2b void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0>(long) Job.cpp:0:0
#30 0x0000556911203f00 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/marcus/llvm18/bin/clang-18+0xa803f00)
#31 0x0000556911203dd4 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/home/marcus/llvm18/bin/clang-18+0xa803dd4)
#32 0x0000556911203ad1 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/marcus/llvm18/bin/clang-18+0xa803ad1)
#33 0x00005569112035f9 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/marcus/llvm18/bin/clang-18+0xa8035f9)
#34 0x0000556911207a28 clang_main(int, char**, llvm::ToolContext const&) (/home/marcus/llvm18/bin/clang-18+0xa807a28)
#35 0x000055690a8ad01e (/home/marcus/llvm18/bin/clang-18+0x3ead01e)
#36 0x00007f96c3201f47 (/usr/lib/libc.so.6+0x201f47)
#37 0x00007f96c3202004 __libc_start_main (/usr/lib/libc.so.6+0x202004)
#38 0x000055690aba9031 _start (/home/marcus/llvm18/bin/clang-18+0x41a9031)
clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation)
clang version 18.0.0git (https://github.com/llvm/llvm-project.git cd6e462d012f289cc4ec12927ca8198f9ed1469e)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /home/marcus/llvm18/bin
clang++: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: /tmp/ieee754-a11a66.cpp
clang++: note: diagnostic msg: /tmp/ieee754-a11a66.sh
clang++: note: diagnostic msg: 

********************
make[1]: *** [tools/v8_gypfiles/v8_libbase.target.mk:188: /tmp/makepkg/nodejs/src/node/out/Release/obj.target/v8_libbase/deps/v8/src/base/ieee754.o] Fehler 1
```
Here are the mentioned files:

[ieee754-a11a66.cpp.txt](https://github.com/llvm/llvm-project/files/13715270/ieee754-a11a66.cpp.txt)
[ieee754-a11a66.sh.txt](https://github.com/llvm/llvm-project/files/13715271/ieee754-a11a66.sh.txt)


I've identified the problematic part of the Cflags to reproduce this is, it comes down to using the Polly parallelizer:

`-mllvm -polly-parallel -fopenmp -fopenmp-version=50 -mllvm -polly-omp-backend=LLVM -mllvm -polly-num-threads=36 -mllvm -polly-scheduling=dynamic -mllvm -polly-scheduling-chunksize=1`

Without these flags, the compile runs fine.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to