No useful backtrace after uncaught exception in std::thread

Tobias Ringström tobias@ringis.se
Tue Jan 8 16:05:00 GMT 2013


On 11/15/2011 09:14 PM, Jonathan Wakely wrote:
>
> What happens in std::thread is that we catch the exception (at which
> point the stack has been unwound) then call std::terminate explicitly.
>   That was done to ensure we onform to the standard and terminate as
> required.
>
> Now that the compiler support noexcept we should use that instead and
> not catch the exception, causing the runtime to call terminate without
> unwinding the stack.
>
> I'll make that change for 4.7.0

Remember this from over a year ago?

I just tried this with 4.7.2 on Fedora 17, and as far as I can tell, it 
behaves just like 4.6.  Did this change never happen?

The workaround I'm using is to add noexcept to all thread's main 
functions, but it's easy to forget adding it.

/Tobias



More information about the Gcc-help mailing list