On 8 January 2013 21:39, Ángel González wrote: > You are lying to the compiler there. OTOH, level1 shall not throw any > exception (has noexcept), OTOH it *is* throwing an exception. So I gues > you're at undefined behavior. No, when an exception is thrown and the search for a handler finds a noexecpt function std::terminate() is called. You've missed the point of the code, the code is *supposed* to trigger abnormal termination, the point is about the quality of the backtrace available after std::terminate is called. > What about surrounding the content of level with a try catch all ? That would not help. That would lose all the context of where the exception was thrown from, so you can't inspect the backtrace (or core file) to see why an exception terminated your program. Tobias, please report it to bugzilla. The standard places no requirements on what happens except that std::terminate is called but even if it's not a bug there is room for improvement.