Open
Description
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"
Works without -MDd
flag.