aboutsummaryrefslogtreecommitdiff
path: root/nptl/tst-cond3.c
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2016-08-26 19:27:16 +0200
committerFlorian Weimer <fweimer@redhat.com>2016-08-26 19:40:17 +0200
commit7e625f7e85b4e88f10dbde35a0641742af581806 (patch)
tree9548c7d75393d1b9cd033ea0c875936bee6f9a52 /nptl/tst-cond3.c
parent0ac8ee53e8efbfd6e1c37094b4653f5c2dad65b5 (diff)
downloadglibc-7e625f7e85b4e88f10dbde35a0641742af581806.zip
glibc-7e625f7e85b4e88f10dbde35a0641742af581806.tar.gz
glibc-7e625f7e85b4e88f10dbde35a0641742af581806.tar.bz2
nptl: Avoid expected SIGALRM in most tests [BZ #20432]
Before this change, several tests did not detect early deadlocks because they used SIGALRM as the expected signal, and they ran for the full default TIMEOUT seconds. This commit adds a new delayed_exit function to the test skeleton, along with several error-checking wrappers to pthread functions. Additional error checking is introduced into several tests.
Diffstat (limited to 'nptl/tst-cond3.c')
-rw-r--r--nptl/tst-cond3.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/nptl/tst-cond3.c b/nptl/tst-cond3.c
index ff904e4..546564f 100644
--- a/nptl/tst-cond3.c
+++ b/nptl/tst-cond3.c
@@ -22,6 +22,10 @@
#include <string.h>
#include <unistd.h>
+static int do_test (void);
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"
/* Note that this test requires more than the standard. It is
required that there are no spurious wakeups if only more readers
@@ -50,7 +54,8 @@ tf (void *arg)
}
/* This call should never return. */
- pthread_cond_wait (&cond, &mut);
+ xpthread_cond_wait (&cond, &mut);
+ puts ("error: pthread_cond_wait in tf returned");
/* We should never get here. */
exit (1);
@@ -96,17 +101,11 @@ do_test (void)
}
}
- /* Set an alarm for 1 second. The wrapper will expect this. */
- alarm (1);
+ delayed_exit (1);
/* This call should never return. */
- pthread_cond_wait (&cond, &mut);
+ xpthread_cond_wait (&cond, &mut);
- puts ("cond_wait returned");
+ puts ("error: pthread_cond_wait in do_test returned");
return 1;
}
-
-
-#define EXPECTED_SIGNAL SIGALRM
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"