<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/153949>153949</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
catch exception in coroutine on windows produces segfault
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kelbon
</td>
</tr>
</table>
<pre>
I created pr with reproducing bug, its producing segfault (only on windows)
https://github.com/kelbon/kelcoro/pull/48
```cpp
dd::task<int> foo1(int i) try {
abc c;
for (;;) {
if (i == 42)
co_return 0;
co_await std::suspend_always{};
try {
bar(c);
break;
} catch (std::exception& e) {
// here `e` already dead,
std::cout << '"' << e.what() << '"';
}
}
throw "";
} catch (...) {
co_return 0;
}
```
Notes:
memory where exception allocated is dead when catch block starts.
Its important that `break` in the try block, even if it is switch `break`, not break for `for` loop
Access violation reading location 0xFFFFFFFFFFFFFFFF.
corotuine:
<img width="682" height="196" alt="Image" src="https://github.com/user-attachments/assets/407cee74-eef3-41af-8c5f-a31f9a888967" />
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJx8VN1uozoQfhrnZpQIbCBwwUXabqTenFdYGTOATx0b2UPZvP2RMU26e6S1ImFP5uebbz5bhqBHi9iy8oWVbwe50OR8-4Gmc_bQuf7evoPyKAl7mD2smibwOHvXL0rbEbplZPwVNAV4GgOOg1wMAeO1s-YOzsKqbe_WwHjDsgvLLhPRHJi4MH5l_DpqmpbupNyN8WuqnjbKecf4dV6MYfxa1CmYVVn6qXlm2aXvYyJxIRk-mHjVlpj4AYNzOeO1tgSa8QbI34GdX1h2AZCdAsVEOgzOR6TxKF6i55cXgB7iPxqYeGPiDQqe8MO2lPvpkRZvIftKtRnlKjVBoB1VWMKMtv8pzSrvIeY-vyX_PeQ7sLg66RmvVSyV0nYe5cezBDu_gZKkpojtUQZ_KZxJR-IqwN_bAEg0w4QegVUZsioDaTzK_g49yj4OMTo_0im3EDDxysQrMH5mnDN-_jLgaZ0kRc5imT-cfgO67b6-NHm3wubFdwa-t3I6nb7D_h-9Kc1j9onAfxzhpqPscsOb83dYtyYfdIA0xqlNwDpsvUYPu5ftjFMfEEh6CqeU8Z0C6NvsPElLQJOkyFiaQZWBtkATbkPbgiNz-Ik2akVTrBFWvXX0DIo-1lEaZNJblQ3Ox3zGuXnXwkUpDAE-tTNygx7nEy_U1kA0ZL-uf6wddLwntGiLiYr4E6_6NsKqe5qifDmv6kg8TKjHiZIpb6pokmY_v9_kiNESvEqWv9zTJaA_SiKpphtaCoxfZQi4bYrsrBDPxRFxEMcil8OxVuVwlCIfGlnXdVNFuWy6FD8OfSv6RjTygG1-LktRFKLkh6mtiq6qVF4PWMo-G-qzKGqhirppsGnqJjvolme8zOq8ynPR5PzEsSsbzFHWNe-Rl6zI8Ca1ORnzeTs5Px50CAu2eSmaojkY2aEJX8-fb6PXsVvGwIrM6EDhGUeaDLZJNk91aQuR-4W0xW_v3P4aYng8hofFm_YvbMY6--c4e_cvKmL8uoGNhO54P1v-XwAAAP__YcGwOQ">