From c43fbfea7ff12c0756433dc96531f05877386539 Mon Sep 17 00:00:00 2001 From: "Hui, Chunyang" Date: Fri, 17 Jul 2020 06:53:27 +0000 Subject: [PATCH] Fix signal testcase and a bug in sig_set --- src/libos/src/signal/sig_set.rs | 2 +- test/signal/main.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/libos/src/signal/sig_set.rs b/src/libos/src/signal/sig_set.rs index 31658d6f..cc1dd06a 100644 --- a/src/libos/src/signal/sig_set.rs +++ b/src/libos/src/signal/sig_set.rs @@ -34,7 +34,7 @@ impl SigSet { } pub fn empty(&self) -> bool { - self.bits != 0 + self.bits == 0 } pub fn full(&self) -> bool { diff --git a/test/signal/main.c b/test/signal/main.c index fc987e43..0e9efdfd 100644 --- a/test/signal/main.c +++ b/test/signal/main.c @@ -112,6 +112,8 @@ static void handle_sigio(int num, siginfo_t *info, void *context) { int test_raise() { struct sigaction new_action, old_action; + memset(&new_action, 0, sizeof(struct sigaction)); + memset(&old_action, 0, sizeof(struct sigaction)); new_action.sa_sigaction = handle_sigio; new_action.sa_flags = SA_SIGINFO | SA_NODEFER; if (sigaction(SIGIO, &new_action, &old_action) < 0) { @@ -236,6 +238,8 @@ int test_handle_sigfpe() { #else // Set up a signal handler that handles divide-by-zero exception struct sigaction new_action, old_action; + memset(&new_action, 0, sizeof(struct sigaction)); + memset(&old_action, 0, sizeof(struct sigaction)); new_action.sa_sigaction = handle_sigfpe; new_action.sa_flags = SA_SIGINFO; if (sigaction(SIGFPE, &new_action, &old_action) < 0) { @@ -290,6 +294,8 @@ int test_handle_sigsegv() { #else // Set up a signal handler that handles divide-by-zero exception struct sigaction new_action, old_action; + memset(&new_action, 0, sizeof(struct sigaction)); + memset(&old_action, 0, sizeof(struct sigaction)); new_action.sa_sigaction = handle_sigsegv; new_action.sa_flags = SA_SIGINFO; if (sigaction(SIGSEGV, &new_action, &old_action) < 0) { @@ -357,6 +363,8 @@ int test_sigaltstack() { } struct sigaction new_action, old_action; + memset(&new_action, 0, sizeof(struct sigaction)); + memset(&old_action, 0, sizeof(struct sigaction)); new_action.sa_sigaction = handle_sigpipe; new_action.sa_flags = SA_SIGINFO | SA_NODEFER | SA_ONSTACK; if (sigaction(SIGPIPE, &new_action, &old_action) < 0) {