From 8a09259e3e0ea231a3c509e067e167a873c57f65 Mon Sep 17 00:00:00 2001 From: Yao Zi Date: Sat, 18 Jan 2025 20:41:11 +0000 Subject: [PATCH 1/4] i#1973: Fix linux.signal* tests on musl POSIX.1 requires SS_ONSTACK to appear only in a stack_t retrieved from sigaltstack(), not one passed to it. musl checks the invalid flag and will bail out with EINVAL before issuing a syscall in this case. This commit sets ss_flags to zero in the test instead, on both glibc and musl this should issue a syscall and result in an EPERM failure. Issue: #1973 --- suite/tests/linux/signal-base.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/suite/tests/linux/signal-base.h b/suite/tests/linux/signal-base.h index 924cac185cc..f69e05a259b 100644 --- a/suite/tests/linux/signal-base.h +++ b/suite/tests/linux/signal-base.h @@ -124,7 +124,7 @@ static void stack_t sigstack; sigstack.ss_sp = siginfo; /* will fail: just need sthg */ sigstack.ss_size = ALT_STACK_SIZE; - sigstack.ss_flags = SS_ONSTACK; + sigstack.ss_flags = 0; int rc = sigaltstack(&sigstack, NULL); assert(rc == -1 && errno == EPERM); #endif From 7fa2a09e7294e44835b378b03270244bd58405a7 Mon Sep 17 00:00:00 2001 From: Yao Zi Date: Mon, 3 Feb 2025 08:01:49 +0000 Subject: [PATCH 2/4] Apply fix for test drcachesim.burst_threads --- clients/drcachesim/tests/burst_threads.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clients/drcachesim/tests/burst_threads.cpp b/clients/drcachesim/tests/burst_threads.cpp index 69ab8a18798..9da7debb8ca 100644 --- a/clients/drcachesim/tests/burst_threads.cpp +++ b/clients/drcachesim/tests/burst_threads.cpp @@ -107,7 +107,7 @@ void * # define ALT_STACK_SIZE (SIGSTKSZ * 2) sigstack.ss_sp = (char *)malloc(ALT_STACK_SIZE); sigstack.ss_size = ALT_STACK_SIZE; - sigstack.ss_flags = SS_ONSTACK; + sigstack.ss_flags = 0; int res = sigaltstack(&sigstack, NULL); assert(res == 0); #endif From 261b5275783d0c1911407afe586e8c53b96a8809 Mon Sep 17 00:00:00 2001 From: Yao Zi Date: Mon, 3 Feb 2025 08:02:11 +0000 Subject: [PATCH 3/4] Apply fix for test api.static_signal --- suite/tests/api/static_signal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/suite/tests/api/static_signal.c b/suite/tests/api/static_signal.c index 716fd8ae1e3..57b83564802 100644 --- a/suite/tests/api/static_signal.c +++ b/suite/tests/api/static_signal.c @@ -85,7 +85,7 @@ thread_func(void *arg) int rc; sigstack.ss_sp = (char *)malloc(ALT_STACK_SIZE); sigstack.ss_size = ALT_STACK_SIZE; - sigstack.ss_flags = SS_ONSTACK; + sigstack.ss_flags = 0; rc = sigaltstack(&sigstack, NULL); ASSERT_NOERR(rc); signal_cond_var(thread_ready); From e4248c8168310cb7aaefe41a33bc3510fc2a8e56 Mon Sep 17 00:00:00 2001 From: Yao Zi Date: Mon, 3 Feb 2025 08:13:57 +0000 Subject: [PATCH 4/4] Apply fix for test linux.bad-signal-stack --- suite/tests/linux/bad-signal-stack.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/suite/tests/linux/bad-signal-stack.c b/suite/tests/linux/bad-signal-stack.c index 00a3434c296..33e46a73fc0 100644 --- a/suite/tests/linux/bad-signal-stack.c +++ b/suite/tests/linux/bad-signal-stack.c @@ -89,7 +89,7 @@ main(int argc, char *argv[]) /* Make an alternate stack that's not writable. */ sigstack.ss_sp = alloc; sigstack.ss_size = ALT_STACK_SIZE; - sigstack.ss_flags = SS_ONSTACK; + sigstack.ss_flags = 0; rc = sigaltstack(&sigstack, NULL); ASSERT_NOERR(rc); protect_mem((void *)sigstack.ss_sp, ALT_STACK_SIZE, ALLOW_READ);