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

    <tr>
        <th>Summary</th>
        <td>
            [clang-cl][crash] Corotutine re-throw in unhandled_exception() in debug mode
        </td>
    </tr>

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

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

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

<pre>
    The following file crashes in runtime in debug mode.

crash.cpp

See lines 11,12,26.

```
#include <coroutine>
#include <iostream>

struct td_coro {
    struct promise_type {
        auto get_return_object() { return td_coro{}; }
        auto initial_suspend() noexcept { return std::suspend_never{}; }
        auto final_suspend() noexcept { return std::suspend_always{}; }
        void return_void() {}
        void unhandled_exception() {
            throw; // does not work
 //std::rethrow_exception(std::current_exception()); // works
        }
 };
};

td_coro coro() {
    throw std::runtime_error{"123"};
 co_return;
}

void f() {
    try {
        coro();
    } catch (std::exception &e) {
        std::cerr << e.what() << "\n"; // crashes on e.what()
    }
}

int main() {
 f();
}
```

command

```
>clang-cl 1.cpp -std:c++latest -EHsc -MDd -v && 1.exe

clang version 20.0.0git (https://github.com/llvm/llvm-project c047a5b3f6e2295dd74f1e8f17f1a023150b246c)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: D:\dev\llvm\win64_ninja_release\bin
 "D:\\dev\\llvm\\win64_ninja_release\\bin\\clang-cl.exe" -cc1 -triple x86_64-pc-windows-msvc19.43.34604 -emit-obj -mincremental-linker-compatible -dumpdir a- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name 1.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -relaxed-aliasing -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -fms-volatile -funwind-tables=2 -target-cpu x86-64 -mllvm -x86-asm-syntax=intel -tune-cpu generic -D_DEBUG -D_MT -D_DLL --dependent-lib=msvcrtd --dependent-lib=oldnames -stack-protector 2 -fcxx-exceptions -fexceptions -fexternc-nounwind -fdiagnostics-format msvc "-fdebug-compilation-dir=D:\\1" -v "-fcoverage-compilation-dir=D:\\1" -resource-dir "D:\\dev\\llvm\\win64_ninja_release\\lib\\clang\\20" -internal-isystem "D:\\dev\\llvm\\win64_ninja_release\\lib\\clang\\20\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.43.34604\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.43.34604\\atlmfc\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\cppwinrt" -fdeprecated-macro -ferror-limit 19 -fmessage-length=186 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.43.34604 -std=c++26 -fno-implicit-modules -fskip-odr-check-in-gmf -fcolor-diagnostics -faddrsig -o "C:\\Users\\egorp\\AppData\\Local\\Temp\\1-d0002c.obj" -x c++ 1.cpp
clang -cc1 version 20.0.0git based upon LLVM 20.0.0git default target x86_64-pc-windows-msvc
ignoring nonexistent directory "C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.43.34604\atlmfc\include"
#include "..." search starts here:
#include <...> search starts here:
 D:\dev\llvm\win64_ninja_release\lib\clang\20\include
 C:\Program Files\Microsoft Visual Studio\2022\Preview\VC\Tools\MSVC\14.43.34604\include
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\winrt
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\cppwinrt
End of search list.
 "C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.43.34604\\bin\\Hostx64\\x64\\link.exe" -out:1.exe "-libpath:C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.43.34604\\lib\\x64" "-libpath:C:\\Program Files\\Microsoft Visual Studio\\2022\\Preview\\VC\\Tools\\MSVC\\14.43.34604\\atlmfc\\lib\\x64" "-libpath:C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.22621.0\\ucrt\\x64" "-libpath:C:\\Program Files (x86)\\Windows Kits\\10\\Lib\\10.0.22621.0\\um\\x64" -nologo "C:\\Users\\egorp\\AppData\\Local\\Temp\\1-d0002c.obj"
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUWN2P4ygS_2volxKRjfP5kId00n27uh7ppJmde4wwlB2mMViAk_R_fwI7H52Z3tud67u-jSIZQ1FfrvpVAfde1QZxSSb3ZLK5413YWbfE2rq2q5W5K618WX7ZIVRWa3tQpoZKaQThuN-hB2XAdSaoBuNQYtnV0FiJI5KtSLZKZCPRtv3rZ0TQyqCHPCdsnTPC1mw60JJpNvyzFWGFMkJ3EoEUa2Gd7YIySIqH7xaV9cEhb4a1bOWD60SAILdxH5DZPclWAADDQutsozxuw0uLV6vxx7tgocawdRg6Z7a2_IYiEDYnbBFJoZ8_8Y6bZxtS3EN83LBRRgXF9dZ3vkUjBybG4lFgG665-SBJsSLFaiDdGtyj-13mlTI_x5rrA3_xb_HeWyWHrds4vlj-A7rO7LiRGuW2l6usuaK_EMdf2Dl7SPLYI2GPIC16MDbAwbrnSNvPn9V1mHa84nxeFJ1zaMKt2Pi_SIiM_ZUWgwG92TFQzoNsdQqV9E1vTUiKXBw5RPsWnbPpGzGWs4IwdmYIwg7xc5GUxCSvVd8LcC83HrvoMXDs9QfBg9jBtSvOLgDCpvi97y8-Q-ditpBiDTg67Pg5qvu5aMBkbeLj4sNTklvzas9Fo2vrlAnQcHUTA9W1HQPtdZ5nK2Gbhhv5AwwoHoTmpqZCQx4xBGhvjiDsnrB7zQP6APThFy-AftpIoPvoBsKmkI_wiAP_yAP26Hx0E8tG2SirVYhu3IXQ-uifZG6twq4rR8I2hD1qvT89aOtshAEQ2XjGJ2VRTZGxxUTK2bjKcV7lsyrnGSvySVay8VT0LvrCXY2BFCs4zqfb6Zi2gh6UkfbgaeP3IpLsHHKZ8FJHwtZ6dSTZ6lfjA9ca5Ua5OL-JOk7WEvdksk6aTdYHZabjrVHmG9861Mg9ksm6VKbPJjbsOW-77Hxz87A_DU6eT35kDKgQOdDgVKvxDYPyxWhcjIrxNBsDxUYFastvQBtlhMMGTeCaamWe0VFhm5YHVWoEKrumlcoBp0Cl8rzUSCuHCFRo5I5yH2iJlXVISy6e0cgLXfo8e3SqUujStOBO0j3XHVLDG_RAY0zSWLPSxCmSGofaCh5Thyb_Q6sE0FYJqnGPGhjQpnK8QdpaZQI6UmyMNQjUoeZHlJRrxX0siLRqeNhRdM5YoFXVUmFNcFwEUmysAVoZS53tjFSmppEWaCOs6euRdT2nqGvVeLq3modYYmnVmehfGqKtnhQbBjSkqKKi7eJXoNMx0CZ6AWh85b6h_sUEfiTFJmqtgYbOYKKv0aCLRm62m4f73_4WB5--pNenJ6BUYqwQaALVqiTFJn5TF-QPVqyWg3N94OI5JkjAaEn0WiWOR3rGpWjUzUtAZwQ1trcOaCUVr431QQlPK-saHiDKjlFMq9RSpIBRuv9cMibF5hLfeYrPfU8u7B4dr_EP7HDobecExuWfz5jokUvG9EOWJQEpbAzXVPkXH7B5dyHpObRCb0pcnyX-w9na8QYeVQynNPVJCWe9rQJ8Vb7jGj6HTip7kpCKQtqJe4WH_uXrun9-sVaf2Hw-TebjMwj8JdTjQTeV-I9UjZXkOJ9G1E-L_-wxEf6uwiA_Hz7Vr4OAYXKUjRibsnw0LHfChQ8T7nfcofw425sPE31Q5gP9Ltr2okAlsXUoeEBJGy5cLCep0aRaNSpAvog1Ar2PCKfR1GFHik0-n_Y1pvNIxZFTHvCoQl9OIt4aP4Bv48-lV2kVXn4wRYdOKfK9Luip9doMrRcbBKqm1UqoEEtop1MF88-qpVY6KnYonqkytG6qWBWsto5eQT3QikvpvKqB2tee_s2jG7yYTqL9cNW2Gx54__JkBddDomMzUORUZlnGxMiW35I_jzAo3Jf9czeYupnvW8KSe5TQtdbA09PXT1crEive6QB9-X27o1O1sS72BLFVOCof0ASQyqXq-HJl5S3YvY10A8xdMO7rNboN0PYa186gdkG0m2MzY6PRKLrII3diBz5wFzzs0GHU7_aMHYmLhzeJ_0SD2leyUxlLNeykZLaC_4Vz_o24V4l9k9UppS_5fJPMCb7fneuAy--vbfP-PHsge3e2Z4jMVg9Ggq1OgaiVD6PhvPPBfcT54PSL9eE4HWbPg3juOR-lbBePhemImppWrcqWRyRffbAR5zYz6s3Y_5dy153aTyn6x0v204n9Gz3aB4luXgmmxmpb_3cq5_VNzJ1cFnJRLPgdLvNZMWGTWT6Z3-2W2SwXc74o8nK2WFQlm8uqmOd8PJGzQnDO7tSSZWycRyOKCSvmo8VYLuayWEzGxbiaCk7GGTZc6VEsGSPr6jvlfYfLnOX5dHaneYnap6tpxgweIK2mm6rNnVumw3_Z1Z6Ms4gE_sImqKDTnfbpGoNMNvHNcb8jkw2srbMh3SiDQ9rf8CnzOzear-627zqnl3_u7oiwx6S8J-xxsG6_ZP8KAAD__9_FDNY">