Issue |
104801
|
Summary |
[analyzer] Analyzer crashes with #pragma omp parallel for
|
Labels |
new issue
|
Assignees |
|
Reporter |
VReichelt
|
The clang analyzer runs into an assertion when running the command `clang++ --analyze -fopenmp -c bug.cc` on the following code:
```
int* foo(int m, int n)
{
int* p = new int[m];
for (int i = 0; i < m; ++i)
p[i] = 1;
#pragma omp parallel for
for (int i = 0; i < n; ++i)
p[i] += 2;
return p;
}
```
Assertion:
```
clang++: /tmp/LLVM/llvm-project/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp:1290: bool isInitializationOfVar(const clang::ento::ExplodedNode*, const clang::ento::VarRegion*): Assertion `VR->getDecl()->isStaticLocal() && "non-static stackless VarRegion"' failed.
```
This happens at least since version 16.0.0 and is still reproducible with today's git revision.
Stack dump:
```
0. Program arguments: /LLVM/bin/clang++ --analyze -fopenmp bug.cc
1. <eof> parser at end of file
#0 0x00000000037e2718 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/LLVM/bin/clang+++0x37e2718)
#1 0x00000000037e057c llvm::sys::CleanupOnSignal(unsigned long) (/LLVM/bin/clang+++0x37e057c)
#2 0x000000000372c200 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007fccbb312ce0 __restore_rt (/lib64/libpthread.so.0+0x12ce0)
#4 0x00007fccb9d91a9f raise (/lib64/libc.so.6+0x4ea9f)
#5 0x00007fccb9d64e05 abort (/lib64/libc.so.6+0x21e05)
#6 0x00007fccb9d64cd9 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21cd9)
#7 0x00007fccb9d8a3f6 (/lib64/libc.so.6+0x473f6)
#8 0x000000000587e69a (anonymous namespace)::StoreSiteFinder::VisitNode(clang::ento::ExplodedNode const*, clang::ento::BugReporterContext&, clang::ento::PathSensitiveBugReport&) BugReporterVisitors.cpp:0:0
#9 0x000000000586d258 generateVisitorsDiagnostics(clang::ento::PathSensitiveBugReport*, clang::ento::ExplodedNode const*, clang::ento::BugReporterContext&) BugReporter.cpp:0:0
#10 0x000000000586e553 (anonymous namespace)::PathDiagnosticBuilder::findValidReport(llvm::ArrayRef<clang::ento::PathSensitiveBugReport*>&, clang::ento::PathSensitiveBugReporter&) BugReporter.cpp:0:0
#11 0x0000000005872d39 clang::ento::PathSensitiveBugReporter::generatePathDiagnostics(llvm::ArrayRef<clang::ento::PathDiagnosticConsumer*>, llvm::ArrayRef<clang::ento::PathSensitiveBugReport*>&) (/LLVM/bin/clang+++0x5872d39)
#12 0x0000000005873106 clang::ento::PathSensitiveBugReporter::generateDiagnosticForConsumerMap(clang::ento::BugReport*, llvm::ArrayRef<clang::ento::PathDiagnosticConsumer*>, llvm::ArrayRef<clang::ento::BugReport*>) (/LLVM/bin/clang+++0x5873106)
#13 0x000000000586fc33 clang::ento::BugReporter::FlushReport(clang::ento::BugReportEquivClass&) (/LLVM/bin/clang+++0x586fc33)
#14 0x0000000005870a8f clang::ento::BugReporter::FlushReports() (/LLVM/bin/clang+++0x5870a8f)
#15 0x00000000053b3602 (anonymous namespace)::AnalysisConsumer::HandleCode(clang::Decl*, unsigned int, clang::ento::ExprEngine::InliningModes, llvm::DenseSet<clang::Decl const*, llvm::DenseMapInfo<clang::Decl const*, void>>*) AnalysisConsumer.cpp:0:0
#16 0x00000000053d151f (anonymous namespace)::AnalysisConsumer::HandleDeclsCallGraph(unsigned int) AnalysisConsumer.cpp:0:0
#17 0x00000000053d1f41 (anonymous namespace)::AnalysisConsumer::HandleTranslationUnit(clang::ASTContext&) AnalysisConsumer.cpp:0:0
#18 0x0000000005a151dc clang::ParseAST(clang::Sema&, bool, bool) (/LLVM/bin/clang+++0x5a151dc)
#19 0x0000000004293bd9 clang::FrontendAction::Execute() (/LLVM/bin/clang+++0x4293bd9)
#20 0x0000000004224859 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/LLVM/bin/clang+++0x4224859)
#21 0x0000000004363f11 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/LLVM/bin/clang+++0x4363f11)
#22 0x0000000000bbd840 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/LLVM/bin/clang+++0xbbd840)
#23 0x0000000000bb5f3f ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#24 0x0000000004070979 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
#25 0x000000000372c6b2 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/LLVM/bin/clang+++0x372c6b2)
#26 0x0000000004071036 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.284) Job.cpp:0:0
#27 0x000000000403d3d4 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/LLVM/bin/clang+++0x403d3d4)
#28 0x000000000403de2b clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/LLVM/bin/clang+++0x403de2b)
#29 0x0000000004047346 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/LLVM/bin/clang+++0x4047346)
#30 0x0000000000bb9ed5 clang_main(int, char**, llvm::ToolContext const&) (/LLVM/bin/clang+++0xbb9ed5)
#31 0x0000000000acaf03 main (/LLVM/bin/clang+++0xacaf03)
#32 0x00007fccb9d7dcf3 __libc_start_main (/lib64/libc.so.6+0x3acf3)
#33 0x0000000000bb567e _start (/LLVM/bin/clang+++0xbb567e)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 20.0.0git (https://github.com/llvm/llvm-project.git 065d2d9c60da0214c17a8300385b22be1c26dc70)
Target: x86_64-unknown-linux-gnu
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs