regex memory corruption regression test
[libc-test] / src / regression / raise-race.c
index 9b18a8e..6b4c4ef 100644 (file)
@@ -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 <pthread.h>
 #include <signal.h>
 #include <errno.h>
@@ -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;
 }