summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2015-06-29 16:31:10 +0000
committerDmitry Vyukov <dvyukov@google.com>2015-06-29 16:31:10 +0000
commit6adc5c727f655efcad245f35cc6b7ea536ba1ff2 (patch)
tree0aef9837fa59d505554d6510a5657dabd45a489f
parent93a62971a99778578dd0470f101d6413641fc4b5 (diff)
downloadcompiler-rt-6adc5c727f655efcad245f35cc6b7ea536ba1ff2.tar.gz
sanitizer_common: fix and re-enable signal_segv_handler test
struct sigaction was not initialized. As the result if SA_RESETHAND is set in sa_flags, then the handler is reset after first invocation leading to crash. Initialize struct sigaction to zero. Reviewed in http://reviews.llvm.org/D10803 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@240965 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc b/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc
index dd18213d6..23e32a884 100644
--- a/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc
+++ b/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc
@@ -13,12 +13,11 @@
// "benign" SEGVs that are handled by signal handler, and ensures that
// the process survive.
-// REQUIRES: disabled
-
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/mman.h>
+#include <string.h>
void *guard;
@@ -28,6 +27,8 @@ void handler(int signo, siginfo_t *info, void *uctx) {
int main() {
struct sigaction a, old;
+ memset(&a, 0, sizeof(a));
+ memset(&old, 0, sizeof(old));
a.sa_sigaction = handler;
a.sa_flags = SA_SIGINFO;
sigaction(SIGSEGV, &a, &old);