Revert "[compiler-rt] Change default of allow_user_segv_handler to true"

Failed libFuzzer tests on Windows.

This reverts commit r303476.

llvm-svn: 303481
This commit is contained in:
Vitaly Buka 2017-05-20 02:09:25 +00:00
parent a6bdf751a2
commit 4eff87c36d
3 changed files with 14 additions and 14 deletions

View File

@ -327,6 +327,11 @@ exec $_to \$@
EOF 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 if [[ x$extra_options != x ]] ; then
ASAN_OPTIONS="$ASAN_OPTIONS,$extra_options" ASAN_OPTIONS="$ASAN_OPTIONS,$extra_options"
fi fi

View File

@ -251,8 +251,7 @@ TEST(AddressSanitizer, BitFieldNegativeTest) {
namespace { namespace {
const char kSEGVCrash[] = "AddressSanitizer: SEGV on unknown address"; const char kSEGVCrash[] = "AddressSanitizer: SEGV on unknown address";
const char kOverriddenSigactionHandler[] = "Test sigaction handler\n"; const char kOverriddenHandler[] = "ASan signal handler has been overridden\n";
const char kOverriddenSignalHandler[] = "Test signal handler\n";
TEST(AddressSanitizer, WildAddressTest) { TEST(AddressSanitizer, WildAddressTest) {
char *c = (char*)0x123; char *c = (char*)0x123;
@ -260,12 +259,12 @@ TEST(AddressSanitizer, WildAddressTest) {
} }
void my_sigaction_sighandler(int, siginfo_t*, void*) { void my_sigaction_sighandler(int, siginfo_t*, void*) {
fprintf(stderr, kOverriddenSigactionHandler); fprintf(stderr, kOverriddenHandler);
exit(1); exit(1);
} }
void my_signal_sighandler(int signum) { void my_signal_sighandler(int signum) {
fprintf(stderr, kOverriddenSignalHandler); fprintf(stderr, kOverriddenHandler);
exit(1); exit(1);
} }
@ -274,20 +273,16 @@ TEST(AddressSanitizer, SignalTest) {
memset(&sigact, 0, sizeof(sigact)); memset(&sigact, 0, sizeof(sigact));
sigact.sa_sigaction = my_sigaction_sighandler; sigact.sa_sigaction = my_sigaction_sighandler;
sigact.sa_flags = SA_SIGINFO; sigact.sa_flags = SA_SIGINFO;
char *c = (char *)0x123; // ASan should silently ignore sigaction()...
EXPECT_DEATH(*c = 0, kSEGVCrash);
// ASan should allow to set sigaction()...
EXPECT_EQ(0, sigaction(SIGSEGV, &sigact, 0)); EXPECT_EQ(0, sigaction(SIGSEGV, &sigact, 0));
#ifdef __APPLE__ #ifdef __APPLE__
EXPECT_EQ(0, sigaction(SIGBUS, &sigact, 0)); EXPECT_EQ(0, sigaction(SIGBUS, &sigact, 0));
#endif #endif
EXPECT_DEATH(*c = 0, kOverriddenSigactionHandler); char *c = (char*)0x123;
EXPECT_DEATH(*c = 0, kSEGVCrash);
// ... and signal(). // ... and signal().
EXPECT_NE(SIG_ERR, signal(SIGSEGV, my_signal_sighandler)); EXPECT_EQ(0, signal(SIGSEGV, my_signal_sighandler));
EXPECT_DEATH(*c = 0, kOverriddenSignalHandler); EXPECT_DEATH(*c = 0, kSEGVCrash);
} }
} // namespace } // namespace
#endif #endif

View File

@ -92,7 +92,7 @@ COMMON_FLAG(HandleSignalMode, handle_sigill, kHandleSignalNo,
COMMON_FLAG(HandleSignalMode, handle_sigfpe, kHandleSignalYes, COMMON_FLAG(HandleSignalMode, handle_sigfpe, kHandleSignalYes,
COMMON_FLAG_HANDLE_SIGNAL_HELP(SIGFPE)) COMMON_FLAG_HANDLE_SIGNAL_HELP(SIGFPE))
#undef COMMON_FLAG_HANDLE_SIGNAL_HELP #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 " "If set, allows user to register a SEGV handler even if the tool "
"registers one.") "registers one.")
COMMON_FLAG(bool, use_sigaltstack, true, COMMON_FLAG(bool, use_sigaltstack, true,