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

    <tr>
        <th>Summary</th>
        <td>
            Crash from SourceCode.cpp:235
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

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

<pre>
    I submitted this initially to https://github.com/clangd/clangd/issues/1857, but realized that is the wrong github project. ( @HighCommander4 )

I was getting a crash in clangd on a large source file with many includes. I tried to bisect the file to create a small standalone repo, but was not able to do so and am otherwise unable to share the source.

I've included the stack below. I did build llvm with -DCMAKE_BUILD_TYPE=RelWithDebInfo and attach gdb

What I did notice is SourceCode.cpp:235
`  StringRef SpellingFile = SM.getSLocEntry(Spelling.first).getFile().getName();`

the FileId to getSLocEntry is invalid. If I change SourceCode.cpp to something like:

`
  bool InvalidSLocEntry = false;
  auto SLocEntry = SM.getSLocEntry(Spelling.first, &InvalidSLocEntry);
  if(InvalidSLocEntry) {
    return false;
  }
  StringRef SpellingFile = SLocEntry.getFile().getName();
`
then at least I don't get a crash any longer. When running clangd --check on the problematic file I do still get:
`
I[15:50:02.353] Building AST...
E[15:50:03.089] [fe_pch_malformed] Line 1: malformed or corrupted AST file: 'incorrectly-formatted source location entry in AST file'
I[15:50:03.089] Indexing AST...

`

So there is still a secondary underlying bug I guess, but at least now I'm not crashing clangd from vscode whenever I open this file.

Logs
See backtrace below

System information
Output of clangd --version:
clangd version 17.0.4
Features: linux
Platform: x86_64-unknown-linux-gnu

Editor/LSP plugin:
VSCode, but reproducible with clangd --check

Operating system:
Debian GNU/Linux 11

Backtrace from gdb

`
#0 clang::SrcMgr::FileInfo::getName (this=) at /ssd/llvm/llvm-project-17.0.4.src/clang/include/clang/Basic/SourceManager.h:349
https://github.com/clangd/clangd/issues/1 clang::clangd::isSpelledInSource (Loc=Loc@entry=..., SM=...) at /ssd/llvm/llvm-project-17.0.4.src/clang-tools-extra/clangd/SourceCode.cpp:240
https://github.com/clangd/clangd/issues/2 0x00005555566f102e in clang::clangd::nameLocation (D=..., SM=...) at /ssd/llvm/llvm-project-17.0.4.src/clang-tools-extra/clangd/AST.cpp:177
https://github.com/clangd/clangd/issues/3 0x0000555556a392e8 in clang::clangd::(anonymous namespace)::isPrivateProtoDecl (ND=...) at /ssd/llvm/llvm-project-17.0.4.src/clang-tools-extra/clangd/index/SymbolCollector.cpp:71
https://github.com/clangd/clangd/issues/4 clang::clangd::SymbolCollector::shouldCollectSymbol (ND=..., ASTCtx=..., Opts=..., IsMainFileOnly=) at /ssd/llvm/llvm-project-17.0.4.src/clang-tools-extra/clangd/index/SymbolCollector.cpp:517
https://github.com/clangd/clangd/issues/5 0x0000555556a399df in clang::clangd::SymbolCollector::handleDeclOccurrence (this=0x7fffffffa618, D=0x5555637776e0, Roles=131084, Relations=..., Loc=..., ASTNode=...)
at /ssd/llvm/llvm-project-17.0.4.src/clang-tools-extra/clangd/index/SymbolCollector.cpp:609
https://github.com/clangd/clangd/issues/6 0x000055555716d654 in clang::index::IndexingContext::handleDeclOccurrence (this=this@entry=0x7fffffffa1f8, D=D@entry=0x5555637776e0, Loc=Loc@entry=..., IsRef=, Parent=Parent@entry=0x5555637775f0, Roles=131084, Relations=...,
OrigE=0x555563777958, OrigD=0x5555637776e0, ContainerDC=0x555563777638) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexingContext.cpp:450
https://github.com/clangd/clangd/issues/7 0x000055555716d706 in clang::index::IndexingContext::handleReference (this=0x7fffffffa1f8, D=0x5555637776e0, Loc=..., Parent=0x5555637775f0, DC=0x555563777638, Roles=8, Relations=..., RefE=0x555563777958, RefD=0x0)
at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexingContext.cpp:89
https://github.com/clangd/clangd/issues/8 0x000055555719c7c7 in (anonymous namespace)::BodyIndexer::VisitMemberExpr (E=0x555563777958, this=) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexBody.cpp:153
https://github.com/clangd/clangd/issues/9 clang::RecursiveASTVisitor<(anonymous namespace)::BodyIndexer>::WalkUpFromMemberExpr (S=0x555563777958, this=) at /ssd/llvm/llvm-project-17.0.4.src/build/tools/clang/include/clang/AST/StmtNodes.inc:1255
https://github.com/clangd/clangd/issues/10 clang::RecursiveASTVisitor<(anonymous namespace)::BodyIndexer>::TraverseMemberExpr (this=this@entry=0x7fffffff9e88, S=S@entry=0x555563777958, Queue=Queue@entry=0x7fffffff9de8)
at /ssd/llvm/llvm-project-17.0.4.src/clang/include/clang/AST/RecursiveASTVisitor.h:2454
https://github.com/clangd/clangd/issues/11 0x0000555557190c5c in clang::RecursiveASTVisitor<(anonymous namespace)::BodyIndexer>::dataTraverseNode (this=0x7fffffff9e88, S=0x555563777958, Queue=0x7fffffff9de8)
at /ssd/llvm/llvm-project-17.0.4.src/build/tools/clang/include/clang/AST/StmtNodes.inc:1255
https://github.com/clangd/clangd/issues/12 clang::RecursiveASTVisitor<(anonymous namespace)::BodyIndexer>::TraverseStmt (this=this@entry=0x7fffffff9e88, S=, Queue=Queue@entry=0x0)
at /ssd/llvm/llvm-project-17.0.4.src/clang/include/clang/AST/RecursiveASTVisitor.h:686
https://github.com/clangd/clangd/issues/13 0x000055555718f659 in clang::index::IndexingContext::indexBody (this=, S=0x0, Parent=, DC=0x4f) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexBody.cpp:508
https://github.com/clangd/clangd/issues/14 0x00005555571812ab in (anonymous namespace)::IndexingDeclVisitor::VisitFunctionDecl (this=0x7fffffffa050, D=0x5555637775f0) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:299
https://github.com/clangd/clangd/issues/15 0x000055555717f8d9 in clang::index::IndexingContext::indexDecl (this=this@entry=0x7fffffffa1f8, D=D@entry=0x5555637775f0) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:783
https://github.com/clangd/clangd/issues/16 0x000055555717fe1b in clang::index::IndexingContext::indexDeclContext (this=0x7fffffffa1f8, DC=) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:795
https://github.com/clangd/clangd/issues/17 (anonymous namespace)::IndexingDeclVisitor::VisitNamespaceDecl (this=, D=) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:594
https://github.com/clangd/clangd/issues/18 0x000055555717f8d9 in clang::index::IndexingContext::indexDecl (this=this@entry=0x7fffffffa1f8, D=D@entry=0x555563777060) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:783
https://github.com/clangd/clangd/issues/19 0x000055555717fe1b in clang::index::IndexingContext::indexDeclContext (this=0x7fffffffa1f8, DC=) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:795
https://github.com/clangd/clangd/issues/20 (anonymous namespace)::IndexingDeclVisitor::VisitNamespaceDecl (this=, D=) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:594
#21 0x000055555717f8d9 in clang::index::IndexingContext::indexDecl (this=this@entry=0x7fffffffa1f8, D=D@entry=0x55557dea5500) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:783
https://github.com/clangd/clangd/issues/22 0x000055555717fe1b in clang::index::IndexingContext::indexDeclContext (this=0x7fffffffa1f8, DC=) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:795
https://github.com/clangd/clangd/issues/23 (anonymous namespace)::IndexingDeclVisitor::VisitNamespaceDecl (this=, D=) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:594
https://github.com/clangd/clangd/issues/24 0x000055555717f8d9 in clang::index::IndexingContext::indexDecl (this=this@entry=0x7fffffffa1f8, D=D@entry=0x55557dea5478) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:783
https://github.com/clangd/clangd/issues/25 0x000055555717fe1b in clang::index::IndexingContext::indexDeclContext (this=0x7fffffffa1f8, DC=) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:795
https://github.com/clangd/clangd/issues/26 (anonymous namespace)::IndexingDeclVisitor::VisitNamespaceDecl (this=, D=) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:594
https://github.com/clangd/clangd/issues/27 0x000055555717f8d9 in clang::index::IndexingContext::indexDecl (this=this@entry=0x7fffffffa1f8, D=D@entry=0x55557dea5408) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:783
https://github.com/clangd/clangd/issues/28 0x000055555717fae0 in clang::index::IndexingContext::indexTopLevelDecl (this=0x7fffffffa1f8, D=0x55557dea5408) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexDecl.cpp:810
https://github.com/clangd/clangd/issues/29 0x000055555716c27c in clang::index::indexTopLevelDecls (Ctx=..., PP=..., Decls=..., DataConsumer=..., Opts=...) at /ssd/llvm/llvm-project-17.0.4.src/clang/lib/Index/IndexingAction.cpp:286
https://github.com/clangd/clangd/issues/30 0x0000555556a15a16 in clang::clangd::(anonymous namespace)::indexSymbols (AST=..., PP=..., DeclsToIndex=..., MacroRefsToIndex=MacroRefsToIndex@entry=0x7fffffffbb90, PI=..., IsIndexMainAST=, Version=...,
CollectMainFileRefs=) at /ssd/llvm/llvm-project-17.0.4.src/clang-tools-extra/clangd/index/FileIndex.cpp:83
https://github.com/clangd/clangd/issues/31 0x0000555556a1575b in clang::clangd::indexMainDecls (AST=...) at /ssd/llvm/llvm-project-17.0.4.src/clang-tools-extra/clangd/index/FileIndex.cpp:224
https://github.com/clangd/clangd/issues/32 0x0000555556a1a597 in clang::clangd::FileIndex::updateMain (this=0x7fffffffbce0, Path=..., AST=...) at /ssd/llvm/llvm-project-17.0.4.src/clang-tools-extra/clangd/index/FileIndex.cpp:470
https://github.com/clangd/clangd/issues/33 0x00005555566e5d08 in clang::clangd::(anonymous namespace)::Checker::buildAST (this=0x7fffffffb378) at /ssd/llvm/llvm-project-17.0.4.src/clang-tools-extra/clangd/tool/Check.cpp:259
https://github.com/clangd/clangd/issues/34 clang::clangd::check (File=..., TFS=..., Opts=...) at /ssd/llvm/llvm-project-17.0.4.src/clang-tools-extra/clangd/tool/Check.cpp:487
https://github.com/clangd/clangd/issues/35 0x00005555566db4dc in clang::clangd::clangdMain (argc=, argv=) at /ssd/llvm/llvm-project-17.0.4.src/clang-tools-extra/clangd/tool/ClangdMain.cpp:975
`
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW1tT4zj2_zTmRUXKluNLHngICfn_UwvdLGGma5-6ZPk40aJIKUnmsp9-S7Kd2CbQ3RhmmZrhIbHlE51zfudqSRCt2VoAnHnRuRfNT0hpNlKdaboBcUf8k0zmT2dLpMtsy4yBHJkN04gJZhjh_AkZiTbG7LQXTj288PBizcymzEZUbj28oJyIdd6-YFqXoD28CNIo8fAMZaVBCghn_3GTE4OYRmYD6EFJsUbVdGin5L-BmhHycIq8sf__bL2Zye2WiBzUGHl44vlzz59Wn0v0QDRagzFMrBFBVBG9QUygSgwkBSKIE7UGpGWpKKCCcUAPzGzQlognxATlZQ56hJbIKGYlkyhjGqhxsjlyIxFVQAwggvSWcI60ISInXApACnayUc8KI6RBJKt-lUukJSIiR2SLpNmAemAaUCkaAr0hChyjSrxRRzkPJ_fQiJhXZIbQO5QBlw9W5JzlKCsZzxHn99tKr9P57Gr6j4vv578tL-ffb_91feGF8xvg35jZzCFbiqIWyRhCN2idZ22m36xhqomFNIyCtdLKCTeTOYzobueFUxxG9Y9iH6GVUUysb6BAqx1wzsR6YWHzwjlaXY3WYFaXkl4Io548nDYko4IpbTw8sQSW3sNpffeFbOs7Lzz3Yr8tnwXBUi-dpdpzI-eu94SzfISWBVoiuiFiDT3pHexyC2ZjXYazO7Ae3eKwZ4hQJiVHy2rOAx-rV0G4BitdTUlKI1GX5Meqz5CH4_70tdb1vKzwcHqEBHnJngYhBaZU4plQXjJvLl8zUTPtjwzRRcdsQCBiEAeincdI4eHEWJPsA9FGGJdiDWqEvll6VQphYa_D8_SUboDe2TC1dt0pmXHYEsNoFXhLF0GGcW6nPdipkWHpRedB5IXTyPfCqY9HYRR60Ryd25CwfKar29GoDqqLLnE48tOJJfai8wK-7-jm-5bwQqot5Hb4kglAgRdO0X4YSYWoVKrc2fw4Xd06KS2JhxMm7COghj-dWnLikmiddbikxDApEFSeKg6_xslRXfbiLUUOj31dejhUnytpUVQuYivQCNJApciJekKlTaD8yc6UlWu0ROsStG4y196QQj4gm3i2LpE5M7YMVii5RfeayhzQwwYE3INCSyR3IKp6YVXqyHgp17oWDwBlhN4ZRShUKawj_ZM2sEVMVOAxKarxr6XZlQbJ4uA096C0fd74Q_2gHkZBMvJH4-rRAogpFdiqhTgT5WM1fM2JsXzs8GMaf4_Hp6W4E_JBnDqq07Uo28Jd5MxI5eHF5eoa7Xi5Zgfuv69sajlUuJ2SeUlZ1tSZrq-3Z_26A0Vc5dJO-f2Uc8gYEej_vvxmWVqBUBC0f3m-x9FZpJfDD36BQ7_ib6cOpytFr9aqunZJVBSyuquD3VZda0cvnNskQwzy8EJrW89tgam_TusifVohPdKKNpXfFv6qXrVGzolmlqJKxFdEEJsRNl44Dcd1OX9ja9FWrn7srpl2aQ7ypaiYWsUuJfXCuf0c-y4OvXBuIwrP0OqquX6L0qdGSq5P4dEo0pbzedkc-0PUxch_9H3fj-xfHBeBj2Hf7DwHQZAtXDaJx8Pp_KP1tRmqUjRIkiGKhh1FSTjBkL6iqIdTIqR42spSI6u13hEKrmpVznCt2D0xcK2kkXOg3KLxZf4REDCbra3pn7aZ5DPJOVAjVQ1LEgxBZfyS_j1m1aDeyJLn9WBF0VV7ZivKzDwe7r_ujD7cLfUVYcKmia-CP705I7wNqSgY5EBR34EmefGKAx0FcENEzsG6y1dKS6VA0HZ-9B-TovojcZBawOZu1HEMkySJwbejN5Lb8jMPwsBPx24EuIvJFtZVajqY5YutKI17VkD8UcjH_qCUHLeRT4I4j6NxD_mKv7tsmpuZFAYezU8B774OGbxlh6DY22Heoejb5JVKsNQ3UDhnn6FrokAYL5zXF0enjIqfNnNd9RVbX3TnmEROcPvkuBNZfAgToOaz3vMwfXOh5izz8GJZe0PPFLU3jKNBFSvpe0Pix2_yhhso4JUIbFn-JWvX9t3b9LkJj2J7sGz6QuzeQHHcnDdQVAL5A4L4J-2UDgratGumCU1oYs30g8J6LvMnJw7UKfN3ppm5gm0G6uJxp-zvj0MztMc8AokVpuk-onAIGpO2e94ALZVm9zBd3Tr1bHmY_QowF9XYN8LvftstlNx2AVq9K0BuMcjDC5f6X23Kp6tbWwPM1thio0dMUAsdjqJBHbn_IeDdKmLf7qAL3Y8KwgRSB6aFeHU8e9dw_7OE0hbc6vvoXDmkw8L4JRMcAcm9G-FxNB5kiqAX1T6NaC_5vpuBcmJIYyTrT0fTdNseL9vgPTD_n4cB_tAwsOL-agC87uYDS9Sv-nacxoPgDbuunRZxNPnFvoI1RaOz5tE4p9_pFVrdwbj4oKIV-ekgSMY9SAJMsp-o4Q02tt3e--a-li9KQW2707w0P--8_Mg_0nm5jur9YLLsmyWUybAVo6gLU1Kk-Zs8p4fIkJeSjwMrSQc1QkHcBwuC7K1g1aOv9--zd24K21hMhmX0ZFgkfWnoe47T-MYHaR1NhvUQ6ecLFz_-rOEy-Ttc9kvV_p87XDwc4uBT-X6SA4ki_5P6PsZ_-_4ei_DP7ftv1Hr8-cJlnLzr6ug7hsuzNvQvHC7xXzJckk8YLv5nDZdnbSgB_y1g3crdJdwDf_l99tlOwgcjkwbDjgT0es6Y4qS_yNdC5hkI2qLQ2QS-vj5cO4rWLTFkJoUut6CO7xq_607U1C09NO_9w1aMQr-7IxxEJOjvRP3KkQIrYrV_6hCcrm5fQfBWVqrtR68IVfIGitaTZ0PHYjjLJtXC1LK9YenorwgTlRR28PfmhFRn57He6m229S23D9vWr44X5fDY-PmgBBAGffMlUb9eds7_NJDsfbxloT9CXYwHVYcQ9_Ql0SR5Rd89--q23OXEgNX_aJLLKNTrm2bTOXbwRyI0TgYlvrB7RiiGKPcHnBGabYDeNduYbvdguro9Dl741qbyJYTssIcXToTGfaJBq5zhi0eFqvO2Hk7dQd-97W8Xq_dL6L-g5zgddk6se84nzrNx3q9-He3ddRMXRK1pnS-JWt-_eyps9N0zrZWeJIfD8yf5WZhPwgk5gbMg8cf-JAij-GRzFk0wwZhS4ucEANIJhJMxRISSPMdFQU_YGfbx2A_8wI_HOIxHQT4J43EOQPM4iFNsK8iWMD6y4o-kWp843M6SOI6TE04y4Nr9MwjGAh6Qe-hh7EXzE3XmVM7Kte0lOdNGH2YxzHA4m7kD3u706bH_DjgpFT97xahHkO2cG7Ey_jcAAP__Eha4eA">