-
Notifications
You must be signed in to change notification settings - Fork 15.5k
Closed
Labels
clang-tidyclang:dataflowClang Dataflow Analysis framework - https://clang.llvm.org/docs/DataFlowAnalysisIntro.htmlClang Dataflow Analysis framework - https://clang.llvm.org/docs/DataFlowAnalysisIntro.html
Description
Hi,
This doesn't happen at every run, but very often clang-tidy will get stuck when analyzing my project (not open source so I can't share it here, and didn't manage yet to narrow it down to a small example which reproduces the issue).
This happens more often (but not only) when bugprone-unchecked-optional-access is activated.
Tried both clang-tidy-15 and latest clang-tidy built from git (commit bbcffb0) and had the issue.
Stack trace:
0x0000aaaad50dcd2c in clang::dataflow::WatchedLiteralsSolverImpl::solve() && ()
(gdb) bt
#0 0x0000aaaad50dcd2c in clang::dataflow::WatchedLiteralsSolverImpl::solve() && ()
#1 0x0000aaaad50dff94 in clang::dataflow::WatchedLiteralsSolver::solve(llvm::DenseSet<clang::dataflow::BoolValue*, llvm::DenseMapInfo<clang::dataflow::BoolValue*, void> >) ()
#2 0x0000aaaad50ca1e0 in clang::dataflow::DataflowAnalysisContext::querySolver(llvm::DenseSet<clang::dataflow::BoolValue*, llvm::DenseMapInfo<clang::dataflow::BoolValue*, void> >) ()
#3 0x0000aaaad50ca43c in clang::dataflow::DataflowAnalysisContext::flowConditionImplies(clang::dataflow::AtomicBoolValue&, clang::dataflow::BoolValue&) ()
#4 0x0000aaaad50bd20c in clang::dataflow::UncheckedOptionalAccessModel::merge(clang::QualType, clang::dataflow::Value const&, clang::dataflow::Environment const&, clang::dataflow::Value const&, clang::dataflow::Environment const&, clang::dataflow::Value&, clang::dataflow::Environment&) ()
#5 0x0000aaaad50d5a94 in clang::dataflow::Environment::join(clang::dataflow::Environment const&, clang::dataflow::Environment::ValueModel&) ()
#6 0x0000aaaad50d8750 in clang::dataflow::computeBlockInputState(clang::CFGBlock const&, clang::dataflow::AnalysisContext&) ()
#7 0x0000aaaad50d9480 in clang::dataflow::transferCFGBlock(clang::CFGBlock const&, clang::dataflow::AnalysisContext&, std::function<void (clang::CFGElement const&, clang::dataflow::TypeErasedDataflowAnalysisState const&)>) ()
#8 0x0000aaaad50da070 in clang::dataflow::runTypeErasedDataflowAnalysis(clang::dataflow::ControlFlowContext const&, clang::dataflow::TypeErasedDataflowAnalysis&, clang::dataflow::Environment const&, std::function<void (clang::CFGElement const&, clang::dataflow::TypeErasedDataflowAnalysisState const&)>) ()
#9 0x0000aaaad424dd98 in llvm::Expected<std::vector<llvm::Optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::UncheckedOptionalAccessModel::Lattice> >, std::allocator<llvm::Optional<clang::dataflow::DataflowAnalysisState<clang::dataflow::UncheckedOptionalAccessModel::Lattice> > > > > clang::dataflow::runDataflowAnalysis<clang::dataflow::UncheckedOptionalAccessModel>(clang::dataflow::ControlFlowContext const&, clang::dataflow::UncheckedOptionalAccessModel&, clang::dataflow::Environment const&, std::function<void (clang::CFGElement const&, clang::dataflow::DataflowAnalysisState<clang::dataflow::UncheckedOptionalAccessModel::Lattice> const&)>) ()
#10 0x0000aaaad424e654 in clang::tidy::bugprone::analyzeFunction(clang::FunctionDecl const&, clang::ASTContext&) ()
#11 0x0000aaaad424e92c in clang::tidy::bugprone::UncheckedOptionalAccessCheck::check(clang::ast_matchers::MatchFinder::MatchResult const&) ()
#12 0x0000aaaad689e870 in clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::MatchVisitor::visitMatch(clang::ast_matchers::BoundNodes const&) ()
#13 0x0000aaaad68ef3f8 in clang::ast_matchers::internal::BoundNodesTreeBuilder::visitMatches(clang::ast_matchers::internal::BoundNodesTreeBuilder::Visitor*) ()
#14 0x0000aaaad68a0e88 in clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::matchWithFilter(clang::DynTypedNode const&) ()
#15 0x0000aaaad68c8f44 in clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::TraverseDecl(clang::Decl*) ()
#16 0x0000aaaad68cb8f0 in clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseDeclContextHelper(clang::DeclContext*) [clone .part.0] ()
#17 0x0000aaaad68e8138 in clang::RecursiveASTVisitor<clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor>::TraverseTranslationUnitDecl(clang::TranslationUnitDecl*) ()
#18 0x0000aaaad68c9024 in clang::ast_matchers::internal::(anonymous namespace)::MatchASTVisitor::TraverseDecl(clang::Decl*) ()
#19 0x0000aaaad68cb3c0 in clang::ast_matchers::MatchFinder::matchAST(clang::ASTContext&) ()
#20 0x0000aaaad59222cc in clang::MultiplexConsumer::HandleTranslationUnit(clang::ASTContext&) ()
#21 0x0000aaaad5b2d0a8 in clang::ParseAST(clang::Sema&, bool, bool) ()
#22 0x0000aaaad58f3d04 in clang::FrontendAction::Execute() ()
#23 0x0000aaaad5888d3c in clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) ()
#24 0x0000aaaad515d950 in clang::tooling::FrontendActionFactory::runInvocation(std::shared_ptr<clang::CompilerInvocation>, clang::FileManager*, std::shared_ptr<clang::PCHContainerOperations>, clang::DiagnosticConsumer*) ()
#25 0x0000aaaad510ca70 in clang::tidy::runClangTidy(clang::tidy::ClangTidyContext&, clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>, bool, bool, llvm::StringRef)::ActionFactory::runInvocation(std::shared_ptr<clang::CompilerInvocation>, clang::FileManager*, std::shared_ptr<clang::PCHContainerOperations>, clang::DiagnosticConsumer*) ()
#26 0x0000aaaad515603c in clang::tooling::ToolInvocation::runInvocation(char const*, clang::driver::Compilation*, std::shared_ptr<clang::CompilerInvocation>, std::shared_ptr<clang::PCHContainerOperations>) ()
#27 0x0000aaaad5159f40 in clang::tooling::ToolInvocation::run() ()
#28 0x0000aaaad515b6e0 in clang::tooling::ClangTool::run(clang::tooling::ToolAction*) ()
#29 0x0000aaaad51119dc in clang::tidy::runClangTidy(clang::tidy::ClangTidyContext&, clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, llvm::IntrusiveRefCntPtr<llvm::vfs::OverlayFileSystem>, bool, bool, llvm::StringRef) ()
#30 0x0000aaaad40bc2a8 in clang::tidy::clangTidyMain(int, char const**) ()
#31 0x0000ffff977e1e10 in __libc_start_main (main=0xaaaad4079768 <main>, argc=58, argv=0xffffe933e1e8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=<optimized out>)
at ../csu/libc-start.c:308
#32 0x0000aaaad40b55d0 in _start ()Unfortunately, I don't have debug symbols as I didn't managed to build with debug symbols (build error because of relocation: I suspect with debug symbols object are too big for my system).
This issue looks similar to #55530.
Metadata
Metadata
Assignees
Labels
clang-tidyclang:dataflowClang Dataflow Analysis framework - https://clang.llvm.org/docs/DataFlowAnalysisIntro.htmlClang Dataflow Analysis framework - https://clang.llvm.org/docs/DataFlowAnalysisIntro.html