diff options
Diffstat (limited to 'tests/test-pthread_sigmask2.c')
-rw-r--r-- | tests/test-pthread_sigmask2.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/tests/test-pthread_sigmask2.c b/tests/test-pthread_sigmask2.c index d527eb8d..a847e6b3 100644 --- a/tests/test-pthread_sigmask2.c +++ b/tests/test-pthread_sigmask2.c @@ -25,6 +25,7 @@ #include <stdio.h> #include <unistd.h> +#include "virtualbox.h" #include "macros.h" #if USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS @@ -51,6 +52,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; signal (SIGINT, sigint_handler); @@ -90,7 +101,7 @@ main () from "gcc -fsanitize=thread". */ ASSERT (pthread_join (killer_thread, NULL) == 0); - return 0; + return test_exit_status; } #else |