This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
Re: No useful backtrace after uncaught exception in std::thread
- From: Jonathan Wakely <jwakely dot gcc at gmail dot com>
- To: Tobias Ringström <tobias at ringis dot se>
- Cc: gcc-help at gcc dot gnu dot org
- Date: Tue, 15 Nov 2011 20:14:14 +0000
- Subject: Re: No useful backtrace after uncaught exception in std::thread
- References: <4EC2C395.3010304@ringis.se>
2011/11/15 Tobias Ringström:
>
> That's more like it. Is the std::thread behaviour a bug, or am I missing
> something? Though the C++11 standard seems to allow the stack to be unwound
> before std::terminate is called, it exceptionally unhelpful. I've search but
> not been able to find any explanation.
No, it's not a bug, but it could be improved.
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