Skip to content

Conversation

@Meinersbur
Copy link
Member

When ISL encounters an internal error, it sets the error flag, but it is not isl_error_quota that was already checked. Check for general errors and abort the schedule optimization if that happens, instead of continuing on the "good" path.

The error occured when compiling llvm-test-suite's MultiSource/Applications/JM/lencod/leaky_bucket.c with Polly enabled. Not adding a test case because it depends on ISL internals. We do not want to a test case to depend on which version of ISL is used.

@Meinersbur Meinersbur enabled auto-merge (squash) November 5, 2025 13:12
@Meinersbur Meinersbur merged commit 305cf62 into llvm:main Nov 5, 2025
11 checks passed
@Meinersbur
Copy link
Member Author

Meinersbur commented Nov 5, 2025

The full crash message was:

Assertion "!is_error()" failed at ../../src/llvm/feature/_src/polly/lib/External/isl/include/isl/isl-noexceptions.h:78
  IMPLEMENTATION ERROR: Unhandled error state
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: /home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang -DNDEBUG -mllvm -polly -O3 -DNDEBUG -w -Werror=date-time -fcommon -D__USE_LARGEFILE64 -D_FILE_OFFSET_BITS=64 -MD -MT MultiSource/Applications/JM/lencod/CMakeFiles/lencod.dir/leaky_bucket.c.o -MF MultiSource/Applications/JM/lencod/CMakeFiles/lencod.dir/leaky_bucket.c.o.d -o MultiSource/Applications/JM/lencod/CMakeFiles/lencod.dir/leaky_bucket.c.o -c /home/meinersbur/llvm-testbbmaster/testsuite.src/MultiSource/Applications/JM/lencod/leaky_bucket.c
1.      <eof> parser at end of file
2.      Optimizer
3.      Running pass "function<eager-inv>(drop-unnecessary-assumes,float2int,lower-constant-intrinsics,chr,polly::CodePreparationPass,polly::FunctionToScopPassAdaptor<PassManager<polly::Scop, AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&> >,sroa<modify-cfg>,early-cse<memssa>,speculative-execution<only-if-divergent-target>,jump-threading,correlated-propagation,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-arithmetic;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-verify-fixpoint>,aggressive-instcombine,libcalls-shrinkwrap,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-arithmetic;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,reassociate,constraint-elimination,loop-mssa(loop-instsimplify,loop-simplifycfg,licm<no-allowspeculation>,loop-rotate<header-duplication;no-prepare-for-lto>,licm<allowspeculation>,simple-loop-unswitch<nontrivial;trivial>),simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-arithmetic;no-switch-to-lookup;keep-loops;no-hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-verify-fixpoint>,loop(loop-idiom,indvars,extra-simple-loop-unswitch-passes,loop-deletion,loop-unroll-full),sroa<modify-cfg>,vector-combine,mldst-motion<no-split-footer-bb>,gvn<>,sccp,bdce,instcombine<max-iterations=1;no-verify-fixpoint>,dfa-jump-threading,jump-threading,correlated-propagation,adce,memcpyopt,dse,move-auto-init,loop-mssa(licm<allowspeculation>),coro-elide,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;switch-to-arithmetic;no-switch-to-lookup;keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,instcombine<max-iterations=1;no-verify-fixpoint>,{anonymous}::Bye,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-arithmetic;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;switch-to-arithmetic;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "/home/meinersbur/llvm-testbbmaster/testsuite.src/MultiSource/Applications/JM/lencod/leaky_bucket.c"
4.      Running pass "polly::FunctionToScopPassAdaptor<PassManager<polly::Scop, AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&> >" on function "Sort"
 #0 0x00007ffb7bce5532 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x4477532)
 #1 0x00007ffb7bce222f llvm::sys::RunSignalHandlers() (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x447422f)
 #2 0x00007ffb7bc14808 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007ffb77285330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
 #4 0x00007ffb772deb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007ffb772deb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007ffb772deb2c pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007ffb7728527e raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007ffb772688ff abort ./stdlib/abort.c:81:7
 #9 0x00007ffb7cda22a6 (anonymous namespace)::runIslScheduleOptimizer(polly::Scop&, llvm::function_ref<polly::Dependences const& (polly::Dependences::AnalysisLevel)>, llvm::TargetTransformInfo*, llvm::OptimizationRemarkEmitter*, isl::schedule&, bool&) (.constprop.0) ScheduleOptimizer.cpp:0:0
#10 0x00007ffb7cda60c8 runIslScheduleOptimizerUsingNPM(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&, llvm::raw_ostream*) (.isra.0) ScheduleOptimizer.cpp:0:0
#11 0x00007ffb7cda66ed polly::IslScheduleOptimizerPass::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x55386ed)
#12 0x00007ffb7cd7eb95 llvm::detail::PassModel<polly::Scop, polly::IslScheduleOptimizerPass, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>::run(polly::Scop&, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>&, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x5510b95)
#13 0x00007ffb7ce76cd4 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/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x5608cd4)
#14 0x00007ffb7cd92587 polly::FunctionToScopPassAdaptor<llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x5524587)
#15 0x00007ffb7cd928b5 llvm::detail::PassModel<llvm::Function, polly::FunctionToScopPassAdaptor<llvm::PassManager<polly::Scop, llvm::AnalysisManager<polly::Scop, polly::ScopStandardAnalysisResults&>, polly::ScopStandardAnalysisResults&, polly::SPMUpdater&>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x55248b5)
#16 0x00007ffb7b5f9de5 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x3d8bde5)
#17 0x00007ffb78ca4335 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x1436335)
#18 0x00007ffb7b5f84e1 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x3d8a4e1)
#19 0x00007ffb78ca4a75 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x1436a75)
#20 0x00007ffb7b5f8ccd llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x3d8accd)
#21 0x00007ffb7bfa05d6 (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
#22 0x00007ffb7bfa45dd clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, 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/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x47365dd)
#23 0x00007ffb7c62c1e0 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x4dbe1e0)
#24 0x00007ffb7e4b84dc clang::ParseAST(clang::Sema&, bool, bool) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x6c4a4dc)
#25 0x00007ffb7c957737 clang::FrontendAction::Execute() (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x50e9737)
#26 0x00007ffb7c8dcf2e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x506ef2e)
#27 0x00007ffb7ca50b7e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x51e2b7e)
#28 0x00007ffb78816ceb cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0xfa8ceb)
#29 0x00007ffb7880c287 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>) driver.cpp:0:0
#30 0x00007ffb7880c465 int llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::callback_fn<clang_main(int, char**, llvm::ToolContext const&)::'lambda'(llvm::SmallVectorImpl<char const*>&)>(long, llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#31 0x00007ffb7c69a9bd 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::'lambda'()>(long) Job.cpp:0:0
#32 0x00007ffb7bc14cce llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x43a6cce)
#33 0x00007ffb7c69bac8 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#34 0x00007ffb7c658657 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x4dea657)
#35 0x00007ffb7c659752 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x4deb752)
#36 0x00007ffb7c6662c4 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0x4df82c4)
#37 0x00007ffb78811bdc clang_main(int, char**, llvm::ToolContext const&) (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0xfa3bdc)
#38 0x00007ffb78697b2a main (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0xe29b2a)
#39 0x00007ffb7726a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#40 0x00007ffb7726a28b call_init ./csu/../csu/libc-start.c:128:20
#41 0x00007ffb7726a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#42 0x00007ffb7880b7f5 _start (/home/meinersbur/llvm-testbbmaster/install-llvm/bin/clang+0xf9d7f5)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 22.0.0git (/home/meinersbur/src/llvm/feature/_src/clang e8c4b09d9de0ad2bb6e905d4b602f8f993fb545b)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/meinersbur/llvm-testbbmaster/install-llvm/bin
Build config: +assertions
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/meinersbur/leaky_bucket-937a7b.c
clang: note: diagnostic msg: /tmp/meinersbur/leaky_bucket-937a7b.sh
clang: note: diagnostic msg: 

The ISL error state was set by
https://github.com/llvm/llvm-project/blob/main/polly/lib/External/isl/isl_scheduler.c#L5188-L5189

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

Successfully merging this pull request may close these issues.

1 participant