X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fregression%2Fraise-race.c;h=6b4c4ef1c7c54b96a5c767fc91d22a7690385415;hb=f9ba40bcb2e9cf0e51368d1144a000d1cc15ab9f;hp=9b18a8e6fbbef7433a5317fd436c59334d2adebd;hpb=90e3119b8aa8c34e0d44131ea29e090116645837;p=libc-test diff --git a/src/regression/raise-race.c b/src/regression/raise-race.c index 9b18a8e..6b4c4ef 100644 --- a/src/regression/raise-race.c +++ b/src/regression/raise-race.c @@ -1,5 +1,6 @@ // commit: 370f78f2c80c64b7b0780a01e672494a26b5678e 2011-03-09 -// raise should be robust against forking from a signal handler +// commit: 0bed7e0acfd34e3fb63ca0e4d99b7592571355a9 2011-03-09 +// raise should be robust against async fork in a signal handler #include #include #include @@ -58,12 +59,21 @@ int main(void) void *p; int r, i, s; - signal(SIGRTMIN, handler0); - signal(SIGRTMIN+1, handler1); + if (signal(SIGRTMIN, handler0) == SIG_ERR) + t_error("registering signal handler failed: %s\n", strerror(errno)); + if (signal(SIGRTMIN+1, handler1) == SIG_ERR) + t_error("registering signal handler failed: %s\n", strerror(errno)); - pthread_create(&t, 0, start, 0); - for (i = 0; i < 100; i++) - pthread_kill(t, SIGRTMIN+1); - pthread_join(t,&p); + r = pthread_create(&t, 0, start, 0); + if (r) + t_error("pthread_create failed: %s\n", strerror(r)); + for (i = 0; i < 100; i++) { + r = pthread_kill(t, SIGRTMIN+1); + if (r) + t_error("phread_kill failed: %s\n", strerror(r)); + } + r = pthread_join(t,&p); + if (r) + t_error("pthread_join failed: %s\n", strerror(r)); return t_status; }