From 4eff87c36d6b104aa5fefa8b9c291e007b9ee48b Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Sat, 20 May 2017 02:09:25 +0000 Subject: [PATCH] Revert "[compiler-rt] Change default of allow_user_segv_handler to true" Failed libFuzzer tests on Windows. This reverts commit r303476. llvm-svn: 303481 --- compiler-rt/lib/asan/scripts/asan_device_setup | 5 +++++ compiler-rt/lib/asan/tests/asan_test.cc | 21 ++++++++------------- .../lib/sanitizer_common/sanitizer_flags.inc | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/compiler-rt/lib/asan/scripts/asan_device_setup b/compiler-rt/lib/asan/scripts/asan_device_setup index c807df3..fdfc46f 100755 --- a/compiler-rt/lib/asan/scripts/asan_device_setup +++ b/compiler-rt/lib/asan/scripts/asan_device_setup @@ -327,6 +327,11 @@ exec $_to \$@ EOF } +# On Android-L not allowing user segv handler breaks some applications. +if [[ PRE_L -eq 0 ]]; then + ASAN_OPTIONS="$ASAN_OPTIONS,allow_user_segv_handler=1" +fi + if [[ x$extra_options != x ]] ; then ASAN_OPTIONS="$ASAN_OPTIONS,$extra_options" fi diff --git a/compiler-rt/lib/asan/tests/asan_test.cc b/compiler-rt/lib/asan/tests/asan_test.cc index d0128e3..7ac7295 100644 --- a/compiler-rt/lib/asan/tests/asan_test.cc +++ b/compiler-rt/lib/asan/tests/asan_test.cc @@ -251,8 +251,7 @@ TEST(AddressSanitizer, BitFieldNegativeTest) { namespace { const char kSEGVCrash[] = "AddressSanitizer: SEGV on unknown address"; -const char kOverriddenSigactionHandler[] = "Test sigaction handler\n"; -const char kOverriddenSignalHandler[] = "Test signal handler\n"; +const char kOverriddenHandler[] = "ASan signal handler has been overridden\n"; TEST(AddressSanitizer, WildAddressTest) { char *c = (char*)0x123; @@ -260,12 +259,12 @@ TEST(AddressSanitizer, WildAddressTest) { } void my_sigaction_sighandler(int, siginfo_t*, void*) { - fprintf(stderr, kOverriddenSigactionHandler); + fprintf(stderr, kOverriddenHandler); exit(1); } void my_signal_sighandler(int signum) { - fprintf(stderr, kOverriddenSignalHandler); + fprintf(stderr, kOverriddenHandler); exit(1); } @@ -274,20 +273,16 @@ TEST(AddressSanitizer, SignalTest) { memset(&sigact, 0, sizeof(sigact)); sigact.sa_sigaction = my_sigaction_sighandler; sigact.sa_flags = SA_SIGINFO; - char *c = (char *)0x123; - - EXPECT_DEATH(*c = 0, kSEGVCrash); - - // ASan should allow to set sigaction()... + // ASan should silently ignore sigaction()... EXPECT_EQ(0, sigaction(SIGSEGV, &sigact, 0)); #ifdef __APPLE__ EXPECT_EQ(0, sigaction(SIGBUS, &sigact, 0)); #endif - EXPECT_DEATH(*c = 0, kOverriddenSigactionHandler); - + char *c = (char*)0x123; + EXPECT_DEATH(*c = 0, kSEGVCrash); // ... and signal(). - EXPECT_NE(SIG_ERR, signal(SIGSEGV, my_signal_sighandler)); - EXPECT_DEATH(*c = 0, kOverriddenSignalHandler); + EXPECT_EQ(0, signal(SIGSEGV, my_signal_sighandler)); + EXPECT_DEATH(*c = 0, kSEGVCrash); } } // namespace #endif diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc b/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc index 1972bda..c5aaf41 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc @@ -92,7 +92,7 @@ COMMON_FLAG(HandleSignalMode, handle_sigill, kHandleSignalNo, COMMON_FLAG(HandleSignalMode, handle_sigfpe, kHandleSignalYes, COMMON_FLAG_HANDLE_SIGNAL_HELP(SIGFPE)) #undef COMMON_FLAG_HANDLE_SIGNAL_HELP -COMMON_FLAG(bool, allow_user_segv_handler, true, +COMMON_FLAG(bool, allow_user_segv_handler, false, "If set, allows user to register a SEGV handler even if the tool " "registers one.") COMMON_FLAG(bool, use_sigaltstack, true, -- 2.7.4