// 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>
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;
}