[patch] Update catch(...) handlers to deal with __forced_unwind
Jonathan Wakely
jwakely@redhat.com
Fri Jun 6 09:20:00 GMT 2014
On 06/06/14 10:27 +0200, Uros Bizjak wrote:
>These two tests timeout on alpha-linux-gnu:
>
>FAIL: 30_threads/async/forced_unwind.cc execution test
>WARNING: program timed out.
>FAIL: 30_threads/packaged_task/forced_unwind.cc execution test
>WARNING: program timed out.
Sorry about that, I don't know why.
Does pthread_exit(0) use a __forced_unwind exception on
alpha-linux-gnu? This should tell you ...
#include <bits/cxxabi_forced.h>
#include <pthread.h>
void* f(void*) {
try
{
pthread_exit(0);
}
catch (__cxxabiv1::__forced_unwind const&)
{
__builtin_puts("unwind");
throw;
}
catch (...)
{
__builtin_puts("something else");
throw;
}
}
int main()
{
pthread_t t;
pthread_create(&t, 0, f, 0);
pthread_join(t, 0);
}
>[pid 18326] futex(0x2000027a1f4, FUTEX_WAKE_PRIVATE, 2147483647) = 0
>[pid 18326] futex(0x12001a08c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
>[pid 18326] madvise(0x20000454000, 8355840, MADV_DONTNEED) = 0
>[pid 18326] exit(0) = ?
>[pid 18326] +++ exited with 0 +++
><... futex resumed> ) = 0
>futex(0x12001a098, FUTEX_WAKE_PRIVATE, 2147483647) = 0
>futex(0x12001a05c, FUTEX_WAIT_PRIVATE, 1, NULL
>
>... the test hangs here ...
Could I get a stack trace of the remaining thread at that point?
More information about the Libstdc++
mailing list