<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/146508>146508</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clanf SISEGV in addAssociatedClassesAndNamespaces since clang 9.0
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mariete1223
</td>
</tr>
</table>
<pre>
I have not been able to reduce it more. The original version without reducing gave the error addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0, repeatedly until stack exhaustion, the reduced one does not seem to give any feedback, so both versions will be posted.
## Stack dump:
```
#0 0x00005c1e0215318f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/local/bin/clang-21+0x3c4a18f)
#1 0x00005c1e02150bd4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x0000723f94a83420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#3 0x00005c1e04ab0330 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#4 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#5 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#6 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#7 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#8 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#9 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#10 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#11 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#12 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#13 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#14 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#15 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#16 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#17 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#18 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#19 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#20 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#21 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#22 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#23 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#24 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#25 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#26 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#27 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#28 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#29 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#30 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#31 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#32 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#33 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#34 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#35 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#36 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#37 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#38 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#39 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
#40 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#41 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#42 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
...
#254 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#255 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
```
## Program slightly reduced:
```
#include <tuple>
#include <iostream>
template <typename F>
auto apply(F&& f) ->
decltype(apply(std::forward<F>(f)))
{
}
template <typename F, typename... Args>
auto apply(F&& f, Args&&... args) ->
decltype(apply(std::forward<F>(f),
std::forward_as_tuple(std::forward<Args>(args)...)))
{
return apply(
std::forward<F>(f)
);
}
int main() {
apply(
[](int x) {
return x;
},
10
);
}
```
Original:
```
#include <tuple>
#include <iostream>
template <typename F, typename S, size_t... Is>
auto apply(F&& f, S&& t, std::index_sequence<Is...> is) ->
decltype(std::apply(std::forward<F>(f), std::forward<S>(t), is...))
{
return std::apply(std::forward<F>(f), std::forward<S>(t), is...);
}
template <typename F, typename... Args>
auto apply(F&& f, Args&&... args) ->
decltype(apply(std::forward<F>(f),
std::forward_as_tuple(std::forward<Args>(args)...),
std::make_index_sequence<sizeof...(Args)>{}))
{
return apply(
std::forward<F>(f),
std::forward_as_tuple(std::forward<Args>(args)...),
std::make_index_sequence<sizeof...(Args)>{}
);
}
int main() {
std::vector<int> vec{1, 2, 3, 4, 5, 6, 7};
apply(
[&vec](int x) {
vec.push_back(x * 2);
},
10
);
}
```
To quickly reproduce:
https://godbolt.org/z/vx3T89eax
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUWlFz4r4R_zTiZSceWbLBPPBAyNFmptP-O2T6ysj2AmpkySfJBO7Td2Sb5GJyTW96vWKGOHi0u_rt6ietvZJwTu414oKk9yR9mIjGH4xdVMJK9Bgzxie5Kc-LRziII4I2HnJEDSJXCN6AxbIpEKSHyliM4OmAYKzcSy0UHNE6aTS8SH8wje-Epd7DPtjyBwS01lgQZbl0zhRSeCxXSjiHbqnLv4oKXS0KdIRlhGVCG32uTONAX1oImxO-JHz5pv8XY56bmrApYSsolND7TuLvjVBP5zqowAYr0clFRV0TvqTtH1uBxRqDFXWGRnupwHlRPAOeDqJxXhodhALyzvESjEYoDbo2NA6xClHZyyOC0GfYIZa5KJ6DljOQG3-4RMXBi1QKcoTaOI9lROgyfBknjMOm7bZsqoCub5nS_ttKUaAnSilNixgpi1MeZztQ6lh17rqz6378YaX2rbkn20YsexOy4mVrnLcoqj5gUvsQoDbg68ZZwtbKFEIRts6lJmzdRvSOxYTd0xMvEhFnuzAKdAlAGI8HqGheJrCRey3Un4UuFVrCsraTFbhAk53ZesKW4f5oZNn-nPca7t3o9D2wvocZ47t5IjKeMArbrUXnjcWt9T14JXPC1qdsup0md0rq5nS3103XUPuDRVFGzkS0dSROEka_c4N_70Yicso5vRma9hiTAUaGKH4PxiesaiU8Lu2-qVB7KIx2vpX7DHQ6BL3j2c2Dng7ZkOW7W2PDbIxsyMbIhvmNsyGswnRsbAig47GxIYBmI2DDMJuNgg1X6W0MbBimt1tkwzCbjYINV-ltDGwYprdbZMMwm42BDewqvY2ADWyY3m6QDWyYzUbBhqv0NgY2DNPbLbLh6mVtDGy4Sm9jYMMwvd0iG65e1sbAhqv0NgI28GF6u0E28KuXtRGwgV-ltzGw4aoWeYNsGF0tMoAeXS0ygL71WmTAOLpaZAA9ulpkAD2CWmQyxlpkMsZaZHLjtcgoirqtS5aOrbjXgr7x4t67_eHXjeQ_rNlbUYFTcn_w6nzZuP7RtrLUhWpKBMJXvqkVEv7lqkFe9oy7Nrr0fVBbrXONwUdYd82i8QZEXaszYdm69W0Ku-DJXScAJRbKt95lFznny87znbEvwpaEr1pzrNts7r50SWb37fXhxxjYCi53URTB0u7dv8e16mTa-6Ah2rv_Cu0q6A2FtsJtuwh_aOAClGU9gDB7rlwHALDoG6tfXfmorwGgTq_l31v8pPZQCalbvs7hzf73hvtPd1ik28mH03vxy6eHder6eNWcPfTx6D9xv3pdsFzgDNj8t_5Mya-j7ed8gU13SuEbbn1gwuOnzNn0N93xhssgSF3iaevwa4O6QMJXjy4MJv8C8kfMetX9jyn20ZhvOgnfS0j3xqFXAvXD9L_tkP_-aQrwf5-p741V4hm3V1QI7DK7ViPrHJoHW7P7dqL8grl-Yy79xNLz2s0RC29smMDah1lzxILM7uPAARYuPFyScEnDpU2es2CZf7KEsWkw9dlCdsQiqht32HYHubITELYMPc9_cmn7aF17MvC1kcVzm5hra0Ju7ta4g_d1e4SLrQlb702ZG-UjY_eErb8Rtj6e-FM2R3GalAtezvlcTHARz9KYT-fpdDY5LJIpK1g6YwVNcb6jM8F3BRbJtNxlvCxTnMgFoyylMxrHMWfJNMp303mWzGeYJgmNRUESipWQKlLqWIW-J9K5BhdxMk1pNlEiR-Xao4OMdY8rjJH0YWIXQeEub_aOJFRJ592bCS-9wsVKCb2DzePmy5_-AVJ__hwFTuoCu6cimEd00li1GARJ-kOTR4WpCFu3p9y6f3e1Nf_EwhO2bvE7wta9C8cF-1cAAAD__4hc1_M">