<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/59492>59492</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] `bugprone-unchecked-optional-access` stuck at 100% sometimes
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ArnaudBienner
      </td>
    </tr>
</table>

<pre>
    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 bbcffb08f0fdc0be8c8cba48410f9cb556ea661d) 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.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1z4yjW_jXKDRWXhCxbusiFY8dvp2rydm8nPXOZQnBkM0GgBeTE8-u3QHJsSbaTdG_PdtVuVXcSQDo8z_mCgyDG8JUEuAqS6yBZXJDarpW-mmlJanbNQUrQF7li26tPPMDzIFwE4az5-bDmBjEFRgZ4atGaVBVIRCyCDegt0rUM8BzltUW-rQoLElFB5OrScrZFz1wItAKLjK3pE3peu7clEdu_uFyhcosqrf4EalGAU6ksUk68UbWmgIxCt4iSZmazJhoQt2gNGtycRDLEOGtGSyLJCtAWLLIKSaK1enYPM_UsXQ9BpiRCIHghZSUAPa85XSMNlVaspmCQXQPixtQQ4Gw0UEBD26BSaWg5Bjh1rD1mKbYBzhpywSTM61WllYTLWtI10Cdgl6qyXEkiLgmlYEwwCRE3iFDLN8QC686oOTCUK7s-UORllHjGglgw9lDDec2FRYVWJVpxr0eqypJblOe0KPIwLcKC0TCHlKY0J-N0HIVFRvMkmQCZTCLmoDvRa8L2auggureEPiGrCYUgnh2OBJOw_eeb4UsYhiEhhLAkZJRhinjrDu7FeMaIJYVQz03rD2LpGthv3IImwtwrsQF9W1aiGTauHeDUAQzwJMAT1LTauXG6YrkbzO2uJw7R34whjlBvyqLIxh-fsjudEJuy6VmANHAPNojnJwVeKyV-J8I578yFRu_tO1LdykJ9RMJGcRbENyiIbxrmHcq4y5iSCMKzjBdta-Yi33AzV9LCi20G_1mD3rZK-NWZx33m4_i8e51l7gbmSjLukoPzOQ7Gxe8pYTOrSk4PEE8c4vdQmxzhMu45bs5weJ7Mt10--9yms5nPZneKQRsuJegVdCn8oybiYVvBWageJqJKGvsWqxu54VrJEqR93ws_XfYHpB63RNLLIAl5I4McSvQdfyouz3nOh4kNZvBMG0sf5TDpp8F0mpxPClSVVW3hWij6dCur2t5bYnvOM1_-nx9_H-h-kB0FOu0DzcbpeaBWE2kK0Dsw_26Ic2QsazNCLakLrSCeu0SEBlPdCHi_EV3Y3WhigPXTkFf1gZDseLpLe6oi4fS8qnQtT096zkGdPrQSyyYjOtX8KMXvjfVf1RbZoS3GeMxYljpb7Je8m5cKqAUWxPNXEhugVukgnu8f2yXvc6viUYznXnh7afiNWMvdBrJdWw80TYRQlPySODv_z7n9wP2-G8TNz4iTs1P-WpHyc236ZpxFYS_QYJL0V2NXeDV_7Wq91pF9ZQvLnT46etj1LoCKU5qY3T-cXbyiqA8uG9Q3p8CdUNPcdbYrsv-zA5oY-1j6ekWbpufOtZZcsl3N4ju-gqnFoYGH0DtVwyTNIB0sJsPZuLSgfRJwrQCnRCq5LVVtkCQlmMrVpM6Ur0hm9w-_c8N9Nnnt7PRsXMN3v8X1WtWS_b9iYM4yi7vMoIiL9IPM9jM9aIDrmotX_e7h9quDHxC6U4greoaExl1CJIT0o4S-x1Re3h_crpdcWF8NHky42Pqthedz1hpJFzxNi3E_fn8G-AdNNqANuPDuIfc9RxU96WHN06IfE1-B1trwDRxOOP-JZG6GfNqc9AlENTDLfnjHMbmmQklAo4poOwqDZDHgPe1FTBrFfQf7T_N-cLt-QVyq_Ca5HZr16ANHrZz2rJyF-Jf1yKzvkTF9O0sP1oSyxdOd9q3VDXdP7zKMMe2vbne1sLwS8DJX0tTlbsJPRDLRt9kHZ--srUmOWUj6TvmFaAMDXvdQknYtz5US-9_DObpHZ2kRs7DvCkvtUEo2a_dUzdYeaG33B5Fdod1TqTRN2eBUaq7KigvQt9JYIil0xM6O7Va6KI5rrLNOJFHCskHNb5US_LjQJXG1yfZ1C30rN64MaKC8bi79wT97rGwv_PeMXt9qyopDElzAnf80oNvjvTfFfpl_cl5CuAT9uQLtJZuh6AUnK6mM5fTVEY8GFO4e7kQhJYNtz37Hpms5d_0Prqdjj_0zrw90zxBO6bzRk6fhdtY5Md3DsH3BNdOabL9CcVg_Pj7Sl5coaveTxHD6aKz2wud0TXRHp67j0WrCrdkNn6n02nF0UBHusdxKq2uX_b9CMZf2i-3WhpuizTyfN6AF2TpD32-NhbKV1I3DQ8n3Hr6juUue_03eOOlF7CQcpIqO9zwoJQ45HVOOM-TOpWb90k7z148bB574Xv4n1fojmhtqZdrTSlaMz-axE1o5kZ7TnvR8Mvhc0o1YH-DOcQ8En4Oyy9FHLZ51Z4-ijJ2uGP-Xf_7W_DP4vNQ9ewhzigdbkL0h6M4Qd8Sf_nNpvSG64XjMKeLdVqcoiiKbTiGCyLvk46PguVMx0W6Px_13bvc7iBfhS4tqmk0nKQrieTPg-RK9okG8SNK2sfEvOPGQxTFE4Ae425TFiyCeq8rykv8FDKnatjIKLvnpUW0Fezz_iLGEPj2CZKceaTWAEELEotEowEtq6gAvHetLz3pEg3gWh-leV7hnkyRhja78813VHvso3vz8JgulbS2JBbF1YG8RU7tLFRtADPJ6hcy2zJUwiBg33r3dwJBV_ms_Q8_crntv-PsIbgy0VhrlQEltAKkCaRD7RIVukalNBdQeE6JyfxeDaEBWKZTzFSqURuUWmca5j12O8PcFkFDqySDDSy6IdkgDHCVJEoejC3YVsyzOyAVcRZNpmOE0xNnF-mpKMYsYG0dROi7GUZEWSYYnCSYYQppn6QW_wiHGEY7iKByHOBuN46QgRYSn03SaFCQMxiGUhIuRC6-R0qsLD-YqycYZvhAkB2F2l170lXvoMq9XJhiHghtr9q9ZboW_HrO_WOHL1vde5mhutxCLojAMcIKMKsHyEsxFrcXV2trK5wu8DPByxe26zkdUlc7xXF5ofl22V2ECvPQsTICXnsi_AgAA__-h5ikl">