https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118263
--- Comment #2 from Richard Yao <richard.yao at alumni dot stonybrook.edu> --- To be clear, QueueUserAPC(), WaitForSingleObjectEx() and select() on Windows are all C ABI functions according to the WINE sources. The pointer is technically going to QueueUserAPC(), although it is interrupting WaitForSingleObjectEx(). Giving a pointer that can throw exceptions to a C function can cause bad things to happen as shown by the unity.com blog post. I assume the same should be true for C++ functions marked noexcept.