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

    <tr>
        <th>Summary</th>
        <td>
            llvm-pdbutil crash 0xC0000005
        </td>
    </tr>

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

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

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

<pre>
    Hi,
I need for a personal project to read PDB file and extract from it all informations about its typedef : for all struct or union : name, type, offset, size of each fields.

After some search, I found and tried llvm-pdbutil (v15.0.2 for x86_64-pc-windows-msvc), but it does fails when parsing the PDB (generated by VStudio 2022 in debug mode for x64); here the backtrace :

Stack dump:
0.      Program arguments: llvm-pdbutil -all XXX.pdb
Exception Code: 0xC0000005
 #0 0x00007ff62675ca22 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0xdca22 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0xe0bc5
 #1 0x00007ff62675ca22 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0xe772a C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0xe47f7
 #2 0x00007ff62675ca22 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x764ef C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x70324
 #3 0x00007ff62675ca22 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x7687e C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x76650
 #4 0x00007ff62675ca22 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x704aa C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x75d42
 #5 0x00007ff62675ca22 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x70129 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x734d9
 #6 0x00007ff62675ca22 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x732d4 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x6f63b
 #7 0x00007ff62675ca22 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x89210 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x860a4
 #8 0x00007ff62675ca22 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x45b63 C:\Program Files\LLVM\bin\llvm-pdbutil.exe 0x3a5240
 #9 0x00007ff62675ca22 (C:\Program Files\LLVM\bin\llvm-pdbutil.exe+0xdca22)
#10 0x00007ff626760bc5 (C:\Program Files\LLVM\bin\llvm-pdbutil.exe+0xe0bc5)
0x00007FF62675CA22, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0xDCA22 byte(s)
0x00007FF626760BC5, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0xE0BC5 byte(s)
0x00007FF62676772A, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0xE772A byte(s)
0x00007FF6267647F7, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0xE47F7 byte(s)
0x00007FF6266F64EF, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x764EF byte(s)
0x00007FF6266F0324, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x70324 byte(s)
0x00007FF6266F687E, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x7687E byte(s)
0x00007FF6266F6650, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x76650 byte(s)
0x00007FF6266F04AA, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x704AA byte(s)
0x00007FF6266F5D42, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x75D42 byte(s)
0x00007FF6266F0129, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x70129 byte(s)
0x00007FF6266F34D9, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x734D9 byte(s)
0x00007FF6266F32D4, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x732D4 byte(s)
0x00007FF6266EF63B, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x6F63B byte(s)
0x00007FF626709210, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x89210 byte(s)
0x00007FF6267060A4, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x860A4 byte(s)
0x00007FF6266C5B63, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x45B63 byte(s)
0x00007FF626A25240, C:\Program Files\LLVM\bin\llvm-pdbutil.exe(0x00007FF626680000) + 0x3A5240 byte(s)
0x00007FFD2CB17034, C:\WINDOWS\System32\KERNEL32.DLL(0x00007FFD2CB00000) + 0x17034 byte(s), BaseThreadInitThunk() + 0x14 byte(s)
0x00007FFD2CCE26A1, C:\WINDOWS\SYSTEM32\ntdll.dll(0x00007FFD2CC90000) + 0x526A1 byte(s), RtlUserThreadStart() + 0x21 byte(s)

Is the backtrace enough or do you need the PDB itself ?

Sincerely,
Ludovic.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1WNuO4jgQ_ZrwYhElzo088AABtK1lZkdD70zv08qJK8Q7uSDb6W7267ecdA_Q2-pIDEGC2LHrnFMVx2Uqbfhx_puwaGI5K8tZ3JEagJO8kYSRA0jV1KwkB9n8A5kmuiESGCdfVkuSixIIqzmBZy0ZDuayqYjQhJUlETUiVEyLplaEpU2rcUQRfTwAh5xY3qKnwKlKyxatsdfWOL0bq1kFKKmbb65NnivQpqXEv4BdAiwrUAKUXNm98v53kWuQRDUVEAVMZoUxukOyFpUatVoK9K8sH6vpgaetFiWx6OzRDWzHpp2o51n4d-hPD9n0SdS8eVLTSj1mFo0NVNp5QngDiuRMlIo8FVCTA5NK1HuiC-iCg5B7qEEyjWTpkXzb6ZaLhlCHUgwO4ZC2e1I1HHrK0Df43pIUIKFDSVn2w8QVTEDOPdxpHCG8rQ4_BxwMQfxFNnvJKsLkvq2g1soE8sLPqQn3w8ODjTd6w_VzBgfzkEiCUoyB85w43SfoZ6AnnoN3za0oz0MaRkHG0InEsAfJK-sGV4PC_nb77RNeUlHj7zm7Dc-AOPxXjMFJszNd7g11QRRRdrWxH-XRSRe9oa4o9PF9udbY8ah_0uXdVNcsguuNw8A56fJvqcvx2dXPMQq4T0-6gpvqcml8tbHn8_ikK7ylLo9y_1rjMA-99KQruqGuWUxd52rj0GFn6352Q11-kIbetcYeC6h_tvDj94Rh6rgG3qLLl93VZJI-X-AW-WbvDs0O-ksU_R78SvECvtl0-pOFYU-uCg9qOgcLZ6aNPCh2iT6sDDZmUm0mqvf5Q2eZBCPxrw32ED_mkMVY_AZ7iN-PNtFY_Ab7Y_5wE_rrzUj8kcEe4u_S3Uj8BnvQ_1m0Hs1_xB7kN2l1LH7EHoy_vxhr_UcGe4g_WPlj7T-RwR703-3_JIzivzk_DPB7_mo0foM9yE9Xo71_BnuAf70JveVI_KHBHth_HXNmGYm_Pw8N8IfOYqz4zwz2QPyTYBl6I_H7Bvtj_gXtTlfj8HsLA_6BgBVNli5mifMH8P3u8-qP7zts7Y5KQ-VRbP6-_vp5vfWovdpuz0kNgHNJ2uFdcCL2kim4L0wZ5q4W-r5o6x84emb00WNCkmSNoXLfV_nX7n79qVNZa16WNn7fSEziS4mBAXsr8asu_1Qge5U7zaS-UEjd_yt8qT6pN7UPqJt2X5jiEG_IsWn76tRrlUVoBaWpJm0uCiSizkBCefxZ1Nq2vHkUmT2BuYt5LIiDgMYTPvd47MVsooUuYX5RKskkU8VZMWTSynJeaH0wVRWL4ilnsxe6aFM7ayrsGOOXy_SlWIZdoVSLK49ugplH6aSYR5EXB27MnJmL6TQPfDfFvwTAYtfP0sDzJyVLoVRzK8B9jNbwRDoIbFvBaiLmpnzkYiZwI1zrsZ26CBy6uQOMxjTilu9AxXA9Gx12I_cT2buVtnuFg6VQWp0GmVJijwHt6BCftbpo0IIDypAw6bjnnfb_ADwowrI">