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

    <tr>
        <th>Summary</th>
        <td>
            clangd crashes when parsing nested template lambda in std::for_each(SIGSEGV in ItaniumMangle.cpp)
        </td>
    </tr>

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

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

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

<pre>
    Environment​​
​​clangd version​​: Built from LLVM 20 source (provide output of clangd --versionif available)
​​OS​​: Linux (details if known, e.g., Ubuntu 22.04)
​​Reproduction​​: Observed during background indexing in an editor (e.g., VSCode, Neovim)
​​Crash Details​​
​​Crash Backtrace​​:
#0 0x00000000006fcfe8 llvm::sys::PrintStackTrace(...)
#1 0x00000000006fadb4 SignalHandler(int)
...
#10 ItaniumMangleContextImpl::mangleLambdaSig(...)  // <-- Crash during lambda mangling
​​Trigger Code​​:
void collect(std::vector<std::shared_ptr<IntermediateSource<std::vector<value_type>>>>& sources) const {
    std::for_each(sources.begin(), sources.end(), [](typename decltype(sources)::value_type& ptr) {
        ptr = std::make_shared<typename decltype(sources)::value_type>();  // <-- Crash here
    });
}
​​Minimal Reproduction Example​​
#include <memory>
#include <vector>

template<typename T>
struct IntermediateSource {};

void test() {
    using value_type = int;
    std::vector<std::shared_ptr<IntermediateSource<std::vector<value_type>>>> sources;
    std::for_each(sources.begin(), sources.end(), [](auto& ptr) {
        ptr = std::make_shared<typename decltype(sources)::value_type>();  // Triggers crash
    });
}
​​Observations​​
Crash occurs during ​​lambda name mangling​​ (ItaniumMangle.cpp).
Likely related to nested template types (decltype(sources)::value_typeinside a lambda).
Workarounds:
Replace decltype(sources)::value_typewith an explicit type alias (resolves the crash).
Use range-based forloop instead of std::for_each.
​​Request​​
Please investigate the crash in ItaniumMangleContextImpl::mangleLambdaSig. The issue appears to be triggered by complex template deductions in lambdas.

​​Additional Notes​​
Attach full backtrace if needed (from the original error log).
Mention if the crash is reproducible with other STL algorithms (e.g., std::transform).
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEVkFv2zgT_TX0ZWBBpuxYOfiQOEm_AElb1Gm_Y0CRI4lritSSlGL_-wUpxfbWDtBisVjDgARqOPNm5vFxmHOy0ogrsrgli7sJ63xt7MoZXb2hnF1lk8KI_epe99Ia3aD25J6SPCX57fElvTlf5IrpSkCP1kmjL2zKbuC2k8pDaU0DT08_noGm4ExnOQKheWtNLwWC6XzbeTAljC6n09GpLIH1TCpWKCT0-iKML5vLoZ-k7nYhjEDPpHIgS9hq86YJXQMmVRKe34tO-w4oTdL5RwG-YWuN6Lj_MMsvhUPbowDRWakrKBjfVtZ0WoDUAndhTWpgGlBIb2xA9Y7gx2ZtBIa3z2h62XyEYm2Zq-FuyOUXOzTsuWV86y3jeBF82EizFNJdevhdlbzEHJTqm2CR3bi9G16-Wqn9xjO-fYkeaZ4kyQiZZrOfvDBRzGEjK83U_5gWCi2hudR-2BB2DttSePRMy655ZrpSuDba484_Nq0aojZx-Yk1hWAbWR2iAhD6QOgDkGw9ncKQ7tgDFa0hbpW6ulifFyurCi3EDnxQnN5IAdwohdwTmjsvBkw9cm8sydaHFVczi-K19WH1UXu0DQrJPG4i409ND5t7pjp89fsWSXZ__NOr8Zi4kCU32nkgy9BkAICDm9LYV2S8DrgG86TASmpC81Biun73kqAWx8VBCAjNQ1zNGgSBXEUQB0fBdIB6REivICRHr0-whF_rLZDs7oirYVt8HcpBsvVvRgnpR6TZ7cX-1mhxDE6Wd4Nh6O7y7mKPn6WWDVNweorhfseaVl3qeSSk1Fx1AkPYBhtj9wHUz1_eexi_pDcem1Yxj6cJvwxfnbcd93BOiVjH5d2YwMg1j84PFTgpc-cCp49VivUOJyk7I8W_ScwDK8_D_lMuss6b_5BhoxQ44IFkv8GvQftZoNVlWR5YazjvrHsXp3PDUa5iFgfNOrMKF8ffpDLhbUvodRDSJ7lFtQeLgYUCvAGNLr6NzISQvBtuxF8ok9QuXM5sVNIxyv-N3bJ4tblBH79hqxj_xdK_SV_Ha3DXKsmlj5CAKckiLovOqB4d-BrHRgxRvzsEy3SF04I5FFAaq4xpQWrnkYkwOpwRMfngMv-zCwfsUqe-KmQOQeoenZdVLNk7kHB__9YllcBLjSCd6xBY2yKzLvSkQPAD1VBAsQdughDtjk0SOIqUCyGH2rtk0Idz1DdCyGDMFHw2Hi8z8MZ7xmsoO6XiaBKHgTAOaUSBIlQ-TmghWWNlJYM7tNZYUKYaW_CMOkqnLE-L4sCOuioLhRD7a3yNFjYvT8BUZaz0deNOJ55Dp7xl2pXGhpknmYhVJq6zazbB1Wy5WKT5jNL5pF5xkdJyvpgvxFKI66zk87KY0aLgecGWi2wxkSua0mCfzdIsm8-TOZ0ts1m-KJb5FV2WgsxTbJhUSRhoEmOrSWzLarbIsnw-UaxA5eJ4TKnGt6FphNIwLdtV2DQtusqReaqk8-7oxkuvcDUOrbEi6OCtRg0ts1Gxfz6C4zGX-qJwbh4_be4__Tjj2njKJ51Vq9r7Nh69qFuV9HVXJNw0hD7EeW14TFtr_ogTy0PMxhH6MKbbr-hfAQAA__89cbCc">