summaryrefslogtreecommitdiff
path: root/tests/test-pthread_sigmask1.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-pthread_sigmask1.c')
-rw-r--r--tests/test-pthread_sigmask1.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/test-pthread_sigmask1.c b/tests/test-pthread_sigmask1.c
index a4f9ba6d..aa7efd65 100644
--- a/tests/test-pthread_sigmask1.c
+++ b/tests/test-pthread_sigmask1.c
@@ -29,6 +29,7 @@ SIGNATURE_CHECK (pthread_sigmask, int, (int, const sigset_t *, sigset_t *));
#include <stdlib.h>
#include <unistd.h>
+#include "virtualbox.h"
#include "macros.h"
#if !(defined _WIN32 && !defined __CYGWIN__)
@@ -44,6 +45,16 @@ sigint_handler (_GL_UNUSED int sig)
int
main ()
{
+ /* This test occasionally fails on Linux (glibc or musl libc), in a
+ VirtualBox VM with paravirtualization = Default or KVM, with ≥ 2 CPUs.
+ Skip the test in this situation. */
+ if (is_running_under_virtualbox_kvm () && num_cpus () > 1)
+ {
+ fputs ("Skipping test: avoiding VirtualBox bug with KVM paravirtualization\n",
+ stderr);
+ return 77;
+ }
+
sigset_t set;
intmax_t pid = getpid ();
char command[80];
@@ -78,7 +89,7 @@ main ()
before the call to pthread_sigmask() returns." */
ASSERT (sigint_occurred == 1);
- return 0;
+ return test_exit_status;
}
#else