diff --git a/lib/tests/t_api.c b/lib/tests/t_api.c
index 41ae5254ff..191b5132a8 100644
--- a/lib/tests/t_api.c
+++ b/lib/tests/t_api.c
@@ -31,10 +31,6 @@
#include "include/tests/t_api.h"
-#if !defined(__NetBSD__)
-#define T_API_USES_TIMEOUTS 1
-#endif
-
static char *Usage = "\t-a : run all tests\n"
"\t-b
: chdir to dir before running tests"
"\t-c : use specified config file\n"
@@ -218,11 +214,19 @@ main(int argc, char **argv)
sa.sa_flags = 0;
sigfillset(&sa.sa_mask);
- sa.sa_handler = t_sighandler;
-#if defined(T_API_USES_TIMEOUTS)
- (void)SIGACTION(SIGALRM, &sa, NULL);
+
+#ifdef SIGCHLD
+ /*
+ * This is mostly here for NetBSD's pthread implementation, until
+ * people catch up to the latest unproven-pthread package.
+ */
+ sa.sa_handler = SIG_DFL;
+ (void)sigaction(SIGCHLD, &sa, NULL); /* Note: LOWERCASE sigaction */
#endif
+
+ sa.sa_handler = t_sighandler;
(void)SIGACTION(SIGINT, &sa, NULL);
+ (void)SIGACTION(SIGALRM, &sa, NULL);
/* output start stanza to journal */
@@ -255,11 +259,9 @@ main(int argc, char **argv)
else if (T_pid > 0) {
T_int = 0;
-#if defined(T_API_USES_TIMEOUTS)
sa.sa_handler = t_sighandler;
(void)SIGACTION(SIGALRM, &sa, NULL);
alarm(T_timeout);
-#endif
deadpid = (pid_t) -1;
while (deadpid != T_pid) {
@@ -282,11 +284,9 @@ main(int argc, char **argv)
break;
}
-#if defined(T_API_USES_TIMEOUTS)
alarm(0);
sa.sa_handler = SIG_IGN;
(void)SIGACTION(SIGALRM, &sa, NULL);
-#endif
}
else {
t_info("fork failed, errno == %d\n", errno);