http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55917
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> 2013-01-09 13:59:58 UTC --- One option would be to make the start function have a dynamic-exception-specification of throw(__cxxabiv1::__forced_unwind), which would allow the cancellation exception to propagate (as required) but prevent any other exceptions, but that would result in a call to std::unexpected() rather than std::terminate(), and a user could have replaced the unexpected_handler, so we would not be able to meet the requirement that std::terminate() is called. On top of that, I think the stack would still get unwound before the call to std:unexpected, and dynamic-exception-specifications and unexpected handlers are deprecated in C++11. So I don't think we want to do that. My inclination is to close this as WONTFIX.