Revert "[compiler-rt] Change default of allow_user_segv_handler to true"
authorVitaly Buka <vitalybuka@google.com>
Wed, 24 May 2017 19:09:24 +0000 (19:09 +0000)
committerVitaly Buka <vitalybuka@google.com>
Wed, 24 May 2017 19:09:24 +0000 (19:09 +0000)
Breaks sanitizer-x86_64-linux-fuzzer bot.

This reverts commit r303729.

llvm-svn: 303795

compiler-rt/lib/asan/scripts/asan_device_setup
compiler-rt/lib/asan/tests/asan_test.cc
compiler-rt/lib/sanitizer_common/sanitizer_flags.inc

index c807df3..fdfc46f 100755 (executable)
@@ -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
index d0128e3..7ac7295 100644 (file)
@@ -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
index 1972bda..c5aaf41 100644 (file)
@@ -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,