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

    <tr>
        <th>Summary</th>
        <td>
            LLDB crashes on mingw-produced PDB files
        </td>
    </tr>

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

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

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

<pre>
    While mingw environments normally use dwarf debug info, they can also optionally use PDB debug info, which makes the debug info work in e.g. the Visual Studio debugger. However, when faced with a PDB files produced by mingw tools, LLDB crashes.

This can be reproduced with the attached bundle, [pdb-crash.zip](https://github.com/llvm/llvm-project/files/8856738/pdb-crash.zip), with an executable, accompanying PDB file, and a minidump from running the executable. This allows reproducing the crash in reading the PDB on any operating system.

After unpacking the attached zip file:
```
$ lldb hello-exception-pdb.exe --core hello-exception-pdb.dmp 
(lldb) target create "hello-exception-pdb.exe" --core "hello-exception-pdb.dmp"
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
 #0 0x000055fe8163a634 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x000055fe81638694 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f7540c693c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
 #3 0x00007f753dc44ef0 lldb_private::npdb::PdbAstBuilder::CreateDeclInfoForType[abi:cxx11](llvm::codeview::TagRecord const&, llvm::codeview::TypeIndex) PdbAstBuilder.cpp:0:0
 #4 0x00007f753dc4551c lldb_private::npdb::PdbAstBuilder::CreateRecordType(lldb_private::npdb::PdbTypeSymId, llvm::codeview::TagRecord const&) PdbAstBuilder.cpp:0:0
 #5 0x00007f753dc45a1a lldb_private::npdb::PdbAstBuilder::CreateType(lldb_private::npdb::PdbTypeSymId) PdbAstBuilder.cpp:0:0
 #6 0x00007f753dc41a3d lldb_private::npdb::PdbAstBuilder::GetOrCreateType(lldb_private::npdb::PdbTypeSymId) PdbAstBuilder.cpp:0:0
 #7 0x00007f753dc419f7 lldb_private::npdb::PdbAstBuilder::GetOrCreateType(lldb_private::npdb::PdbTypeSymId) PdbAstBuilder.cpp:0:0
 #8 0x00007f753dc47eeb lldb_private::npdb::PdbAstBuilder::GetOrCreateDeclForUid(lldb_private::npdb::PdbSymUid) PdbAstBuilder.cpp:0:0
 #9 0x00007f753dc47fc6 lldb_private::npdb::PdbAstBuilder::GetOrCreateDeclContextForUid(lldb_private::npdb::PdbSymUid) PdbAstBuilder.cpp:0:0
#10 0x00007f753dc483a6 lldb_private::npdb::PdbAstBuilder::CreateFunctionDeclFromId(lldb_private::npdb::PdbTypeSymId, lldb_private::npdb::PdbCompilandSymId) PdbAstBuilder.cpp:0:0
#11 0x00007f753dc48aa2 lldb_private::npdb::PdbAstBuilder::GetOrCreateInlinedFunctionDecl(lldb_private::npdb::PdbCompilandSymId) PdbAstBuilder.cpp:0:0
#12 0x00007f753dc2ef3f lldb_private::npdb::SymbolFileNativePDB::CreateBlock(lldb_private::npdb::PdbCompilandSymId) SymbolFileNativePDB.cpp:0:0
#13 0x00007f753dc2f34d lldb_private::npdb::SymbolFileNativePDB::GetOrCreateBlock(lldb_private::npdb::PdbCompilandSymId) SymbolFileNativePDB.cpp:0:0
#14 0x00007f753dc2f41b bool llvm::function_ref<bool (llvm::codeview::SymbolKind, lldb_private::npdb::PdbCompilandSymId)>::callback_fn<lldb_private::npdb::SymbolFileNativePDB::ParseBlocksRecursive(lldb_private::Function&)::'lambda'(llvm::codeview::SymbolKind, lldb_private::npdb::PdbCompilandSymId)>(long, llvm::codeview::SymbolKind, lldb_private::npdb::PdbCompilandSymId) SymbolFileNativePDB.cpp:0:0
#15 0x00007f753dc2a7ae lldb_private::npdb::SymbolFileNativePDB::ParseSymbolArrayInScope(lldb_private::npdb::PdbCompilandSymId, llvm::function_ref<bool (llvm::codeview::SymbolKind, lldb_private::npdb::PdbCompilandSymId)>) SymbolFileNativePDB.cpp:0:0
#16 0x00007f753dc2a8ed lldb_private::npdb::SymbolFileNativePDB::ParseBlocksRecursive(lldb_private::Function&) SymbolFileNativePDB.cpp:0:0
#17 0x00007f753c5b9de1 lldb_private::Function::GetBlock(bool) Function.cpp:0:0
#18 0x00007f753dc2f772 lldb_private::npdb::SymbolFileNativePDB::ResolveSymbolContext(lldb_private::Address const&, lldb::SymbolContextItem, lldb_private::SymbolContext&) SymbolFileNativePDB.cpp:0:0
#19 0x00007f753c48fb9e lldb_private::Module::ResolveSymbolContextForAddress(lldb_private::Address const&, lldb::SymbolContextItem, lldb_private::SymbolContext&, bool) Module.cpp:0:0
#20 0x00007f753c447d57 lldb_private::Address::ResolveFunctionScope(lldb_private::SymbolContext&, lldb_private::AddressRange*) Address.cpp:0:0
#21 0x00007f753c700b16 lldb_private::RegisterContextUnwind::InitializeZerothFrame() RegisterContextUnwind.cpp:0:0
#22 0x00007f753c701d5c lldb_private::RegisterContextUnwind::RegisterContextUnwind(lldb_private::Thread&, std::shared_ptr<lldb_private::RegisterContextUnwind> const&, lldb_private::SymbolContext&, unsigned int, lldb_private::UnwindLLDB&) RegisterContextUnwind.cpp:0:0
#23 0x00007f753c6f50fc lldb_private::UnwindLLDB::AddFirstFrame() (.part.0) UnwindLLDB.cpp:0:0
#24 0x00007f753c6f5975 lldb_private::UnwindLLDB::DoGetFrameInfoAtIndex(unsigned int, unsigned long&, unsigned long&, bool&) UnwindLLDB.cpp:0:0
#25 0x00007f753c6796aa lldb_private::StackFrameList::GetFramesUpTo(unsigned int) StackFrameList.cpp:0:0
#26 0x00007f753c67b370 lldb_private::StackFrameList::GetFrameAtIndex(unsigned int) StackFrameList.cpp:0:0
#27 0x00007f753c67bf81 lldb_private::StackFrameList::SetDefaultFileAndLineToSelectedFrame() StackFrameList.cpp:0:0
#28 0x00007f753c6c9b9f lldb_private::ThreadList::SetSelectedThreadByID(unsigned long, bool) ThreadList.cpp:0:0
#29 0x00007f753ca1afe5 lldb_private::minidump::ProcessMinidump::RefreshStateAfterStop() ProcessMinidump.cpp:0:0
#30 0x00007f753c652702 lldb_private::Process::ShouldBroadcastEvent(lldb_private::Event*) Process.cpp:0:0
#31 0x00007f753c652c78 lldb_private::Process::HandlePrivateEvent(std::shared_ptr<lldb_private::Event>&) Process.cpp:0:0
#32 0x00007f753c6534d8 lldb_private::Process::RunPrivateStateThread(bool) Process.cpp:0:0
#33 0x00007f753c53c534 lldb_private::HostNativeThreadBase::ThreadCreateTrampoline(void*) HostNativeThreadBase.cpp:0:0
#34 0x00007f7540c5d609 start_thread /build/glibc-sMfBJT/glibc-2.31/nptl/pthread_create.c:478:7
#35 0x00007f75396d2163 __clone /build/glibc-sMfBJT/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:97:0
Segmentation fault (core dumped)
```

CC @ZequanWu 


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzNWdty47gR_Rr5BSUW75cHPci3jJOZxGV5slX7ogIBUOKaAhgCtKX9-jRAUha5lCxrdjaZ8kgiG-g-fdBoNIBU0N3sl3VeMLTJ-eoNMf6aV4JvGFcScVFtcFHsUC0Zom-4yhBlab1COc_ExL1Bas12iGCOcCEFEqXKBd93eLy9HjR_W-dkjTb4hUnd9UCK3kT1Ar8Qs1aWkf07lzUu0ELVNBdNyxWrLPRFvLFXVjXqGEcZJoyit1ytETYmM3BGorIStNaSdNd6poQopO729Su0IhWWayatiX07sefN5_M6l8ablKGK7TUY3RoSVgqTtdZZc1owrWsSXJc0nRpt1u95OQluJ268VqqUE28-ce_hbwX969QiYgMPRfHafU3Bwm-MKHg0mOE7joMw8mL41dfqJsZf4yRwtGWkVjhtIGACmkvMd-DlngAj4BQoAedzWm9KlFVig6qac91Ou_OuxkLGdRg58Sb3rnftDAw9NhXDtHupDQkYd76DYWcVVlogd1KxTY_TeaZYhWpeYvLS9d3zCK41aL229SS027_m0fVRUdAUrRlAm7ItYSbEpsCOBfDRdEpExUbFFFzutMRaCZCIFK5WTIFHDCuGJq57RDFIOt1HGoF6kDQGHr_ezRd3SNbpJldAuQ5qIFFUCoIOfToYcilrEw1mBHNOipqyg5FIgUpVQdi3RANEz0b21oZ_QZCx2Ak9HHo-eqxyrhbA9cuzbr7IVzA5v2AduzB_4leR04k717w0ImmRsgSktvm_1-0MdMdh4qOhMrD0oSK3VRRlUeDbJEw8YqPlsmJSAdNLoAsUaT5yGKz7bRwuQ39a5LzeTle8bgSlWuswtKSw7Il7bW8dH7ToCbI34x2Y8SjxfZbZJoyWZZW_wsDrwfDmHIax-fVI07lU13VeUPDFvLoxEXLLSPEA2eleVM-7ksFkx2kOUrLdOk4z1c0Qmi5EUPaas7fm6RmvnhgEEEVEcAnchHpKHm0N2h84ZVvNYQ_OOJP-wMUgcMhlLjYgjXfNNDmhQbda7DYP9KQrI46f5VMw9Ak7-DKfPu3NWfjCAT4He_Sz-P7G1L-qnwkyGoJMsuj_DmQ8ABkxlv4ASD1LYYZ-19nsI6gA07Q7C2cyxJmR8Adx3giu2Fb96XB1mrYHcGNYBS6bQPc1J3qlM8xC2fBwBtRBcjjZ9gYKlryAtePcqNHuOUP3MHZ_YDQeOKwsjB66-rGTFwF3-8BdlnnZSeCgPBXFPRRG_4S66pVBrXU4OteFIC-XYB3RO454sIK6meefTnVHER8Q_vNh-0PYvpOiFMr-g8Uqa8cbqo5s4t0Y6YllvLH9j5xfFNYT765VCqW1LtuWGQejFzH5iCvZcChhfa0rCcJRNruIblbe5t3EjQq8SSmGHz_VW9At-OpUffBjNs4PhkE54eIIs8ti2DDfSOdVhXcPfEHEOeviEP3N_zIOP8NdOOQuZhfO_wuj9nyovYKHBGlCmTMCda--y0pdNtLEa4Ndg3Er8TCzRNHptecoIU9MiuK1Dae2GhglZE4pbIzkYPvQ19_2f4BN93hYDMx8jtpe-QPrbZYmYzPom6B1wY57B7VO68tf6ecN6ka2wTfqomv3XfQjGoyVyx3-Qx-7gDmeC8ZAHdX9hPmKtbvx9tU45F4ZRCLbTp2xKu-JrXKpWNWa_87fdO4wogeeqxwX-e_sV1YJtb6v8IaZnXeCRruNA3EHQBwajO1BTwAZF41R-Ww2_S2HUrX95RpXjC5LVY0uqkcs3_0h1D4etprLfAXVIjLHHGO9Gu36aLGdZp9gsldukTAL7GyMyQMTXeTc55VUh-MHX1aJK6UPRxL03mPcsD80nETBGYZvBSRQY1UfjsxVe3IRD1naPzc1QXjsXTNTw3MQB33EURLisUMCc-hlEH6FQdgnffNGfi-fxR_QQl7s9Rk3Hw7Mp140drR0yvwxus4DEA0BZPHYcjcGYMHULctwXSid--fAMux_nsWCFYwo2AgdRNE5SOI-EpKkydiuppm5PRSdxUZ0vXu4PSSjqx-79P2uYBxHf5XCDs7YWAx3x-BtWVIJAhn2W-_lE8sg7a7BecXMsfVCibJlZNBhFIrXX03CwI3ssSqh1dXysRZ1Qa8rgSnBUt29Mj5eD7SS-QGacRTOEAWJ4o9QNOe4j428w3Bunm3a6xIz_BCcOwAHG8sPwT3VvEVmhqZbC_al20mD_dxq_vwRg1-EVE051EYllr0Abo_DYEqUQp8b9I_Px3qPw_H7R-ABDe0EFjTI2MvmYBsy-H2qTxP0XUGRp2Qqv2XXf3_eP7qW58ADL1Whr4maXsvmRsMiYM2PYviM3m32cmYSUtcJPbRcEphp7Fxzm1wS-LIs-JA7SVmpLyhqnm-bF6_mdJ7X2_3BPfwwFqwFoEmidxoWbKVvF7EunpDJR3rVMnctemoxuj_MH94Gmc-bGzTx7V_Zf2rMf6nRoeiKzjyaeAm-Urkq2Ozwok9fVpl7wOn-Xm9_WXhVV8Xs8muaIEg8-2o989zMjeMwSEhMQy-NHYqJ44eZ56QpiTzvqsApK-RsElxPgturfObarmuHduQ6fuA5FksptbEXkQTmbBYn4Cbb4LywtGFLVKuramYwpPVKgrCAnCjfhViaDMo6_bhWa1HNNvpyRf4mrgzemQH7X88oe84">