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

    <tr>
        <th>Summary</th>
        <td>
            [clang static analyzer] Crash in printReferrer(const clang::ento::MemRegion*): Assertion `false && "Unexpected referrer region type."' failed.
        </td>
    </tr>

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

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

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

<pre>
    commit 3e4788377bb29ed389b46521fcba0d06aa985bcf (HEAD -> main, origin/main, origin/HEAD)
Author: Giulio Eulisse <10544+ktf@users.noreply.github.com>
Date:   Thu Sep 5 10:16:51 2024 +0200

    Recover performance loss after PagedVector introduction (#67972)

`clang --analyze`
[code.zip](https://github.com/user-attachments/files/16930162/code.zip)


clang: /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp:341: std::optional<std::__cxx11::basic_string<char> > printReferrer(const clang::ento::MemRegion*): Assertion `false && "Unexpected referrer region type."' failed.
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/htx/Documents/llvm19/build-clang/bin/clang --analyze 4.c
1.      <eof> parser at end of file
2.      While analyzing stack: 
        #0 Calling func4 at line 1558
        #1 Calling main
 #0 0x000063c6f904aaef llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (.localalias) (/home/htx/Documents/llvm19/build-clang/bin/clang+0x486caef)
 #1 0x000063c6f9048b3c llvm::sys::CleanupOnSignal(unsigned long) (/home/htx/Documents/llvm19/build-clang/bin/clang+0x486ab3c)
 #2 0x000063c6f8f8f148 CrashRecoverySignalHandler(int) (/home/htx/Documents/llvm19/build-clang/bin/clang+0x47b1148)
 #3 0x0000728d79c42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x0000728d79c969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
 #5 0x0000728d79c42476 raise (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
 #6 0x0000728d79c287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
 #7 0x0000728d79c2871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
 #8 0x0000728d79c39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #9 0x000063c6fc7958ad printReferrer[abi:cxx11](clang::ento::MemRegion const*) (.localalias) /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp:345:3
#10 0x000063c6fc79634f (anonymous namespace)::StackAddrEscapeChecker::checkEndFunction(clang::ReturnStmt const*, clang::ento::CheckerContext&) const /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Checkers/StackAddrEscapeChecker.cpp:517:10
#11 0x000063c6fc796c18 void clang::ento::check::EndFunction::_checkEndFunction<(anonymous namespace)::StackAddrEscapeChecker>(void*, clang::ReturnStmt const*, clang::ento::CheckerContext&) /home/htx/Documents/llvm19/llvm-project/clang/include/clang/StaticAnalyzer/Core/Checker.h:258:3
#12 0x000063c6fcba5996 clang::ento::CheckerFn<void (clang::ReturnStmt const*, clang::ento::CheckerContext&)>::operator()(clang::ReturnStmt const*, clang::ento::CheckerContext&) const /home/htx/Documents/llvm19/llvm-project/clang/include/clang/StaticAnalyzer/Core/CheckerManager.h:72:29
#13 0x000063c6fcb9f69a clang::ento::CheckerManager::runCheckersForEndFunction(clang::ento::NodeBuilderContext&, clang::ento::ExplodedNodeSet&, clang::ento::ExplodedNode*, clang::ento::ExprEngine&, clang::ReturnStmt const*) /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Core/CheckerManager.cpp:456:30
#14 0x000063c6fcbfd944 clang::ento::ExprEngine::processEndOfFunction(clang::ento::NodeBuilderContext&, clang::ento::ExplodedNode*, clang::ReturnStmt const*) /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp:2986:30
#15 0x000063c6fcbbea30 clang::ento::CoreEngine::HandleBlockEdge(clang::BlockEdge const&, clang::ento::ExplodedNode*) (.localalias) /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp:276:5
#16 0x000063c6fcbbe308 clang::ento::CoreEngine::dispatchWorkItem(clang::ento::ExplodedNode*, clang::ProgramPoint, clang::ento::WorkListUnit const&) (.localalias) /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp:188:7
#17 0x000063c6fcbbdcf5 clang::ento::CoreEngine::ExecuteWorkList(clang::LocationContext const*, unsigned int, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>)::'lambda'(unsigned int)::operator()(unsigned int) const /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp:159:23
#18 0x000063c6fcbbe0f2 clang::ento::CoreEngine::ExecuteWorkList(clang::LocationContext const*, unsigned int, llvm::IntrusiveRefCntPtr<clang::ento::ProgramState const>) /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Core/CoreEngine.cpp:163:41
#19 0x000063c6fc0daf7e clang::ento::ExprEngine::ExecuteWorkList(clang::LocationContext const*, unsigned int) /home/htx/Documents/llvm19/llvm-project/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h:192:34
#20 0x000063c6fc064fd1 (anonymous namespace)::AnalysisConsumer::RunPathSensitiveChecks(clang::Decl*, clang::ento::ExprEngine::InliningModes, llvm::DenseSet<clang::Decl const*, llvm::DenseMapInfo<clang::Decl const*, void> >*) /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp:731:22
#21 0x000063c6fc064d23 (anonymous namespace)::AnalysisConsumer::HandleCode(clang::Decl*, unsigned int, clang::ento::ExprEngine::InliningModes, llvm::DenseSet<clang::Decl const*, llvm::DenseMapInfo<clang::Decl const*, void> >*) /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp:700:5
#22 0x000063c6fc063d3c (anonymous namespace)::AnalysisConsumer::HandleDeclsCallGraph(unsigned int) /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp:490:31
#23 0x000063c6fc0642d8 (anonymous namespace)::AnalysisConsumer::runAnalysisOnTranslationUnit(clang::ASTContext&) /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp:561:48
#24 0x000063c6fc064648 (anonymous namespace)::AnalysisConsumer::HandleTranslationUnit(clang::ASTContext&) /home/htx/Documents/llvm19/llvm-project/clang/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp:616:74
#25 0x000063c6fcdd28ad clang::ParseAST(clang::Sema&, bool, bool) (.localalias) /home/htx/Documents/llvm19/llvm-project/clang/lib/Parse/ParseAST.cpp:191:14
#26 0x000063c6fa2544e6 clang::ASTFrontendAction::ExecuteAction() (.localalias) /home/htx/Documents/llvm19/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1192:11
#27 0x000063c6fa253da0 clang::FrontendAction::Execute() /home/htx/Documents/llvm19/llvm-project/clang/lib/Frontend/FrontendAction.cpp:1082:38
#28 0x000063c6fa159a90 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (.localalias) /home/htx/Documents/llvm19/llvm-project/clang/lib/Frontend/CompilerInstance.cpp:1061:42
#29 0x000063c6fa416209 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /home/htx/Documents/llvm19/llvm-project/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:280:38
#30 0x000063c6f652a124 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /home/htx/Documents/llvm19/llvm-project/clang/tools/driver/cc1_main.cpp:285:40
#31 0x000063c6f651c6d8 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) /home/htx/Documents/llvm19/llvm-project/clang/tools/driver/driver.cpp:215:20
#32 0x000063c6f651c8ee clang_main(int, char**, llvm::ToolContext const&)::'lambda'(llvm::SmallVectorImpl<char const*>&)::operator()(llvm::SmallVectorImpl<char const*>&) const /home/htx/Documents/llvm19/llvm-project/clang/tools/driver/driver.cpp:356:5
#33 0x000063c6f651df8b 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*>&) /home/htx/Documents/llvm19/install/include/llvm/ADT/STLFunctionalExtras.h:47:3
#34 0x000063c6f9f951dd llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(llvm::SmallVectorImpl<char const*>&) const /home/htx/Documents/llvm19/install/include/llvm/ADT/STLFunctionalExtras.h:69:3
#35 0x000063c6f9f93ac0 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'()::operator()() const /home/htx/Documents/llvm19/llvm-project/clang/lib/Driver/Job.cpp:440:32
#36 0x000063c6f9f93f7d 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) /home/htx/Documents/llvm19/install/include/llvm/ADT/STLFunctionalExtras.h:46:40
#37 0x000063c6f8f8f5c7 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (.localalias) (/home/htx/Documents/llvm19/build-clang/bin/clang+0x47b15c7)
#38 0x000063c6f9f93cdd clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (.localalias) /home/htx/Documents/llvm19/llvm-project/clang/lib/Driver/Job.cpp:440:7
#39 0x000063c6f9f2657e clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (.localalias) /home/htx/Documents/llvm19/llvm-project/clang/lib/Driver/Compilation.cpp:199:22
#40 0x000063c6f9f2690c clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&, bool) const /home/htx/Documents/llvm19/llvm-project/clang/lib/Driver/Compilation.cpp:253:62
#41 0x000063c6f9f3a349 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) /home/htx/Documents/llvm19/llvm-project/clang/lib/Driver/Driver.cpp:1946:28
#42 0x000063c6f651daca clang_main(int, char**, llvm::ToolContext const&) /home/htx/Documents/llvm19/llvm-project/clang/tools/driver/driver.cpp:391:39
#43 0x000063c6f6555a1a main /home/htx/Documents/llvm19/build-clang/tools/driver/clang-driver.cpp:17:20
#44 0x0000728d79c29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#45 0x0000728d79c29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#46 0x000063c6f651ba95 _start (/home/htx/Documents/llvm19/build-clang/bin/clang+0x1d3da95)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW81y2zi2fhp6g7KKBPi78IKRpZl0JbddsefO0gUCoIRrClABoEfup78FkJQIWnJsx0q6a3oRS6GIg_N95-D8gCDWmq8EY1dB8ilIri9wa9ZSXRmOxY6L1ZpdVJI-XRG52XADEIuzPEdZVlWwYBTlRRWnCYxqUuGQhinGRZ5UpAYBzP-5KK_BZYAWYIO5COAcSMVX9tvy2QV7bwCLILwOwrJ0KgSoBP_gbcMlWLQN15qBAM2jMInjAH56MHUQh61mSs-EVGzbPM1W3KzbakbkJkCLTtQ1NswKAuBu3YJbtgUJiMIAlVEaoDKJAAxhDAL4KYRh2A3p_gIAwDdG5CNTYMtULdUGC8JAI7UGuDZMgRu8YvR_GTFSAS6MkrQlhkthsQcQpVmRwT2m_m8akgaLFbi8xAI3T3-wIB2mTT4RSdnsD74NkusA5mtjtjpAZQCXAVyOsMGlhX2JjcFkvWHC6AAua94w-xmlBQqjFAZwuRc30cH9dWpYZgK4XMsNsx9mF8DltSTtILRpHjdR0X-53Cr5f4wYK9kNhsuGVwFc3hpsOCk7PCqAy_makQemdPcbeSgpVQtN8Jb1v8zIdhugEsWR1UAbamGiUm4tfbgJ0Hx_7f6e7HZR1P2nwpqTe20Ut7rPyRor617231ZxYb6xmilldciJFNqAAWWASiaM7L59ZZtvbMWlCGBpuUElKLVmqrNdGta4sb4G0wCmIIDwX4LttowYRoHqJwDKCQDmactmAYQBzECNecPorKP35suivF0A3VZ21WBQtSug2FYqA4wEL5jWMv2ccK5168wLsKCAC9K0lAGzZoAorNegwuTBKEyYXVRbxbZKEqY1o0DLVnWX7UistSQcOyitAJoovjW9ys5UgLYba5ruUjgLwuJGyZXCG4DVqneM13pN1fKGXg7OUrmFPnF_EM9IN1dk5wrQnMna2RMrzRTABjBBgayBdfDuTmjv_PeaNwx0UrhYAW21d5r1Tl4EEIVgjpvG_ly3gsRWWsMFA1GS5OP7ov19LjB1AcCND3dhGIYpImldhDHGrAbOQs6R9JPuvtxY53P83XVGyA83Kfyfe6mNYnjjXGpuY0UACxslZo0kuMENx7q_8mO82ji2i_OUYFbvVz1wAH0geYXIMSDzhmHRbn8Xt3xlFyLMW-HSAwWNtPI_UElcIeIpCcdK5nVeR3EO5ta_-0D81Gn1Tyxo4xb5gcmPUCmroijOPZVQr1IGc5oVJIYJDPvputi3y9P7NL5suGh3lyvRdj-QmZaztJNqh3gyY19mkRY1AVuzVgzT-wfeNG-bwI33JkimSsdZChTmLqi9SfU4Sz3JqS8Z5lmNAK5sVHuTZDfQk5w9kxxVb5YZVZ7M3JeJClakb5Pphngyi7GPkqxIckwnuSf5hCseoLLLWy6Vv5yGgMtVXTI6GhV-YYJO7N8-VEIUhRP4KYpdqYeFFE8b2Wog8IbprQuCRYfz-Azdb8T-ZyHoshWudPK5-sZMq8St2ZgRRfPjSb0XO5fCsJ1xkbboRv1KApMos7VmeGAwmjJIohw8Sk6Pw3IEdV_HNHWl0TP20PydtlgEMLdKPGf4h23wI-z3hc7oynNLSMUOBpmtA1TCJPe91ksspMJJUaQvIlhaKp1RPtYhLdF9pcsUNlK5aFT86bz-zbx_xQKvevozaG1QHOhHPv1FnRb4RTi9tL5-asWw2pZSnYwVByH_Iyn7ZDO9z8sJBhe7bSMpo3bULXv1rS8ZZbHbqoVYccGeSztq3PPE-KMG6sJSnNjuF43CUuzbqKZFHH8Xnft_32osBP29Pp9pXhmYzsnkAXjPIizyKY2JT2PFMApPuLpUbExjV9R-aiR5WNAV8xncXx6gvoG0n1VS9O62hzWQlLmNlgNF6ZQiFOavo4hyvcWGrP8t1cNnwzanvOxlv-nb2RvpmocTLNopvnBt_iW4GXH-i7mMcpvYsgOX2YRLSurkdVwudoy0hg04fSq_SILtMu7XqJeG9v1gT9-hifwsjGo1f2TfWD0X5saoAM2PKtObwOIePNpWIH2NEsCswZuK4gBm4wa0a_ZO5M_JXWes_E7ZJrGqwVHVkU8dPazhX9g4P5XMFNksFR3I9PuukOI6Y6_LTx9E5s8qZG-wWd8yobnhj5OsY4urqICuL9szA_2WLEzjmkbfa8nctJrruRS63QyV1rdWeLO70kH7hF0z0ryy9un9ruGCi9VXSZn2XfKaCe1KLs8R7QSeGSYDvuLtZ1HL7wxyvUy3M3y-umCprNcIGsDllNDejzMU2aAAD9aKptaiEL3PWl3BMHc57oSFpuHgb4t932Jh6JUrEE4MhigiP2IwC1zPcdP8Q-Ht-kjm-iWw48LCRoeAC9HUUSHN34dbtWL44Xdxp7DQjYu5trbyXbe8vfu4vYN3c5GkdtHG-YGLeMpFGr-Ti84H_gIkpO75aDbKM35rQynMsbdndYOVZuXtnY_mlm1w365UUjaHz_OU0k6J4bO8vRvqicKaNBqh8boQDJM4Zt6WUHl7N5BUjrbc-mKiHLrcc-EYGchXYwDU1QHRaMFmE0SIYq_1fAHOHsjZ1Q5zV76M1pZXJeMoKXDhqT2Xmy1vmPostMGCsON2OI3zfG3bCOxUyT3cLpSM8r9Xx-I4SmFYjOH2wA4CH_sK1Qf5jJWPSpkDqDu3SJcn1Rm6-zz07ek_Mk0TiCMYA0Ki--7Ix-jBaKkUfvrG6v5B_qEasBXAHPjXhgrhx3EaKRt7H1X80QXDQbk9pMTa7LCp4z88TZOIpDQHAzPzqKNqBOx2g5umOxfyebNtjuJL_ULJypj0ID8c-58B7b4MMCMLE45gwinMnPUt1mC7oYxcY-UMUb4KxNGu_s1snWr83y7oA_YGXqYWJf6WF0ITZmmdV7bcG3FX9zun98otCPvjO1nqnzAQ3DQVJg_3tRgq7z-JGRd2nDtMMJ711dZ7ld24jYtN43Xe_cma8vrOlkR3X4bNatwsdkZh7frrOPMeHSGv9CvqIokoPafZfrJ_v5untPB5SiY8IUy8NN6vlC55zaO53GywoNMq5GhyOHY8bMSKOwzm7uybxzl4_eGx8c32wr1RmBt9OFvm3YEbW0NY63hnz_oV1NW15d4CRxfM6UD2kbuW10Nc-k1WQ4cXu0x9KEVQOjVZndHuSfRJ_x4eiX4n0Pxt8mcmPwS9s0ewdFK-ZNNjVQnJRib2DlgNneewH3iLa9Y8eWZ62SXOea4tq6KEZMHo0TLKpz5MKP0vDztn6XVOBpTDwyj_aFRRwzTxt-g9W7iGAj_rRAcDec3OZKC94dRz0BduLb1tiJ9C1gjlfiOi8DeE43DKWhGSt7L2m6z0acp-k9UXro1H2UtVxd7vtpirrqh5C8uDcx4l-4zUwgTZumRErX_otUYYxcUpGNej717Te6T5PmWSn0nth_rp9bh7iQqXQeChp4-nnSHFBH9EZ3jOHszt-KFDqognTViS4Ai7497vOcv-fBPB_nDpqeCO_o0a7Hhy8BcWtHjjYWI3ZJwA42Qqk8UhuL-3w-61wcrc9xDfNAuL_VnSiQNUuEhAJ_-DkntEEcVFsp91_3oKU6p7Fah7caDu96cA6RdH99YF-A83a8B27rQGZSBCsVWs1QxcPgIjgWYM8NFmWj_NBb1CtEAFvmBXUQaTPEdZEl-srwockiwmKYzqCqYFRJDFeVEUOUSIoii54FcwhHFYhEUEwyKKZ6yuIxbmGYNhFlYkC-KQbTBvZpaBmVSrC_cSx1UUZnkCLxpcsUa7l64g7HmAQXJ9oa6cw1ftSgdx2HBt9EGE4aZxb2p1bGi3sd-_BcFUkFx35-UBF3-eF2IuWtVcvf-Nl56vxyv4_wEAAP__HVj05g">