| Issue |
53002
|
| Summary |
A/F: idx < size() after commit bbeaf2a
|
| Labels |
new issue
|
| Assignees |
nikic
|
| Reporter |
dyung
|
One of our internal tests started to hit an assertion failure which I bisected to be caused by commit bbeaf2a.
```
clang: /home/dyung/src/upstream/llvm_clean_git/llvm/include/llvm/ADT/SmallVector.h:277: T& llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::operator[](llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::size_type) [with T = llvm::Evaluator::MutableValue; <template-parameter-1-2> = void; llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::reference = llvm::Evaluator::MutableValue&; llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::size_type = long unsigned int]: Assertion `idx < size()' failed.
```
I also reduced the test to the following code:
```c++
void init(char, void *data, unsigned size) {
unsigned char *bytes = (unsigned char *)data;
for (unsigned i = 0; i != size; ++i)
bytes[i] = i;
}
#define INIT(PRED, VAR) init(PRED, &VAR, sizeof(VAR))
struct test3_struct_id696_ {
test3_struct_id696_() { INIT(8, *this); }
long : 36;
wchar_t b;
} test38_struct_id7952;
```
To reproduce the failure, compile the code with optimizations enabled (-O2) and targeting the PS4 (-target x86_64-scei-ps4):
```
clang -c -O2 -target x86_64-scei-ps4 repro.cpp
```
Full stack dump from crash when using a compiler built from commit bbeaf2aac678633749e7385466da10a1c0120b3b:
```
clang: /home/dyung/src/upstream/llvm_clean_git/llvm/include/llvm/ADT/SmallVector.h:277: T& llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::operator[](llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::size_type) [with T = llvm::Evaluator::MutableValue; <template-parameter-1-2> = void; llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::reference = llvm::Evaluator::MutableValue&; llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::size_type = long unsigned int]: Assertion `idx < size()' failed.
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: /home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang -c -O2 -target x86_64-scei-ps4 repro.cpp
1. <eof> parser at end of file
2. Optimizer
#0 0x000055a2e4a69264 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
#1 0x000055a2e4a670a4 llvm::sys::CleanupOnSignal(unsigned long) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x3b460a4)
#2 0x000055a2e4998e18 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007f3fe79953c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x153c0)
#4 0x00007f3fe743418b raise /build/glibc-eX1tMB/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
#5 0x00007f3fe7413859 abort /build/glibc-eX1tMB/glibc-2.31/stdlib/abort.c:81:7
#6 0x00007f3fe7413729 get_sysdep_segment_value /build/glibc-eX1tMB/glibc-2.31/intl/loadmsgcat.c:509:8
#7 0x00007f3fe7413729 _nl_load_domain /build/glibc-eX1tMB/glibc-2.31/intl/loadmsgcat.c:970:34
#8 0x00007f3fe7424f36 (/lib/x86_64-linux-gnu/libc.so.6+0x36f36)
#9 0x000055a2e4ae90ef llvm::Evaluator::MutableValue::write(llvm::Constant*, llvm::APInt, llvm::DataLayout const&) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x3bc80ef)
#10 0x000055a2e4aeaee7 llvm::Evaluator::EvaluateBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, false>, llvm::BasicBlock*&, bool&) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x3bc9ee7)
#11 0x000055a2e4aed78f llvm::Evaluator::EvaluateFunction(llvm::Function*, llvm::Constant*&, llvm::SmallVectorImpl<llvm::Constant*> const&) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x3bcc78f)
#12 0x000055a2e423e333 EvaluateStaticConstructor(llvm::Function*, llvm::DataLayout const&, llvm::TargetLibraryInfo*) GlobalOpt.cpp:0:0
#13 0x000055a2e4ad729d llvm::optimizeGlobalCtorsList(llvm::Module&, llvm::function_ref<bool (llvm::Function*)>) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x3bb629d)
#14 0x000055a2e423c0b9 optimizeGlobalsInModule(llvm::Module&, llvm::DataLayout const&, llvm::function_ref<llvm::TargetLibraryInfo& (llvm::Function&)>, llvm::function_ref<llvm::TargetTransformInfo& (llvm::Function&)>, llvm::function_ref<llvm::BlockFrequencyInfo& (llvm::Function&)>, llvm::function_ref<llvm::DominatorTree& (llvm::Function&)>) GlobalOpt.cpp:0:0
#15 0x000055a2e423d87a llvm::GlobalOptPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x331c87a)
#16 0x000055a2e5cc0346 llvm::detail::PassModel<llvm::Module, llvm::GlobalOptPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x4d9f346)
#17 0x000055a2e410eb3f llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x31edb3f)
#18 0x000055a2e4de203f (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> >&) (.constprop.0) BackendUtil.cpp:0:0
#19 0x000055a2e4de4c52 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x3ec3c52)
#20 0x000055a2e5c55c33 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x4d34c33)
#21 0x000055a2e69c4a69 clang::ParseAST(clang::Sema&, bool, bool) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x5aa3a69)
#22 0x000055a2e5c545c8 clang::CodeGenAction::ExecuteAction() (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x4d335c8)
#23 0x000055a2e552fa59 clang::FrontendAction::Execute() (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x460ea59)
#24 0x000055a2e54bd0de clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x459c0de)
#25 0x000055a2e5610ee3 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x46efee3)
#26 0x000055a2e2131ef7 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x1210ef7)
#27 0x000055a2e212e2d8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#28 0x000055a2e5341139 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#29 0x000055a2e4998f9c llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x3a77f9c)
#30 0x000055a2e534184f clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (.part.0) Job.cpp:0:0
#31 0x000055a2e531240b clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&) const (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x43f140b)
#32 0x000055a2e5312f19 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) const (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x43f1f19)
#33 0x000055a2e531ccd9 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x43fbcd9)
#34 0x000055a2e20622ba main (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x11412ba)
#35 0x00007f3fe74150b3 __libc_start_main /build/glibc-eX1tMB/glibc-2.31/csu/../csu/libc-start.c:342:3
#36 0x000055a2e212de4e _start (/home/dyung/src/upstream/bbeaf2aac678633749e7385466da10a1c0120b3b-linux/bin/clang+0x120ce4e)
clang-14: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 14.0.0 (https://github.com/llvm/llvm-project.git bbeaf2aac678633749e7385466da10a1c0120b3b)
Target: x86_64-scei-ps4
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs