[compiler-rt] r280885 - [sanitizer] Fix a conflict between abort_on_error and handle_abort.
Yung, Douglas via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 7 18:46:53 PDT 2016
Hi Evgeniy,
This change you made seems to be causing a problem with our internal build bot. I'm seeing the following errors when trying to build your change:
[74/399] Generating gtest-all.cc.x86_64.o
FAILED: cd /home/siadmin/jenkins/w/opensource/opensource_build/llvm/projects/compiler-rt/lib/tsan/go && env "CC=/usr/bin/cc " IN_TMPDIR=1 SILENT=1 /home/siadmin/jenkins/w/opensource/opensource_build/llvm/projects/compiler-rt/lib/tsan/go/buildgo.sh
/tmp/gotsan.5u5SyTl4ZX/gotsan.cc: In function 'void __sanitizer::Abort()':
/tmp/gotsan.5u5SyTl4ZX/gotsan.cc:10286:12: error: 'struct sigaction' has no member named 'sa_sigaction'
sigact.sa_sigaction = (sa_sigaction_t)SIG_DFL;
^
At global scope:
cc1plus: error: unrecognized command line option "-Wno-unknown-warning-option" [-Werror]
cc1plus: error: unrecognized command line option "-Wno-unused-const-variable" [-Werror]
cc1plus: all warnings being treated as errors
ninja: build stopped: subcommand failed.
I'm not sure though where the "unrecognized command line option" errors are coming from though. Can you look into the sigaction error that your change introduced?
Douglas Yung
> -----Original Message-----
> From: llvm-commits [mailto:llvm-commits-bounces at lists.llvm.org] On
> Behalf Of Evgeniy Stepanov via llvm-commits
> Sent: Wednesday, September 07, 2016 16:41
> To: llvm-commits at lists.llvm.org
> Subject: [compiler-rt] r280885 - [sanitizer] Fix a conflict between
> abort_on_error and handle_abort.
>
> Author: eugenis
> Date: Wed Sep 7 18:40:53 2016
> New Revision: 280885
>
> URL: http://llvm.org/viewvc/llvm-project?rev=280885&view=rev
> Log:
> [sanitizer] Fix a conflict between abort_on_error and handle_abort.
>
> Reset the SIGABRT signal handler before calling abort().
>
> Also, change the error message when catching SIGABRT to say "ABRT"
> instead of "SEGV".
>
> Added:
> compiler-
> rt/trunk/test/asan/TestCases/Posix/handle_abort_on_error.cc
> Modified:
> compiler-rt/trunk/lib/asan/asan_posix.cc
> compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc
>
> Modified: compiler-rt/trunk/lib/asan/asan_posix.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-
> rt/trunk/lib/asan/asan_posix.cc?rev=280885&r1=280884&r2=280885&view=dif
> f
> =======================================================================
> =======
> --- compiler-rt/trunk/lib/asan/asan_posix.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_posix.cc Wed Sep 7 18:40:53 2016
> @@ -88,6 +88,8 @@ void AsanOnDeadlySignal(int signo, void
> ReportDeadlySignal("FPE", sig);
> else if (signo == SIGILL)
> ReportDeadlySignal("ILL", sig);
> + else if (signo == SIGABRT)
> + ReportDeadlySignal("ABRT", sig);
> else
> ReportDeadlySignal("SEGV", sig);
> }
>
> Modified: compiler-
> rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-
> rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc?rev=280885&r1=
> 280884&r2=280885&view=diff
> =======================================================================
> =======
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc
> (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cc
> +++ Wed Sep 7 18:40:53 2016
> @@ -44,6 +44,8 @@
> #define MAP_NORESERVE 0
> #endif
>
> +typedef void (*sa_sigaction_t)(int, siginfo_t *, void *);
> +
> namespace __sanitizer {
>
> u32 GetUid() {
> @@ -126,6 +128,14 @@ void SleepForMillis(int millis) { }
>
> void Abort() {
> + // If we are handling SIGABRT, unhandle it first.
> + if (IsHandledDeadlySignal(SIGABRT)) {
> + struct sigaction sigact;
> + internal_memset(&sigact, 0, sizeof(sigact));
> + sigact.sa_sigaction = (sa_sigaction_t)SIG_DFL;
> + internal_sigaction(SIGABRT, &sigact, nullptr); }
> +
> abort();
> }
>
> @@ -170,7 +180,6 @@ void UnsetAlternateSignalStack() {
> UnmapOrDie(oldstack.ss_sp, oldstack.ss_size); }
>
> -typedef void (*sa_sigaction_t)(int, siginfo_t *, void *); static void
> MaybeInstallSigaction(int signum,
> SignalHandlerType handler) {
> if (!IsHandledDeadlySignal(signum))
>
> Added: compiler-
> rt/trunk/test/asan/TestCases/Posix/handle_abort_on_error.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-
> rt/trunk/test/asan/TestCases/Posix/handle_abort_on_error.cc?rev=280885&
> view=auto
> =======================================================================
> =======
> --- compiler-
> rt/trunk/test/asan/TestCases/Posix/handle_abort_on_error.cc (added)
> +++ compiler-
> rt/trunk/test/asan/TestCases/Posix/handle_abort_on_error.cc
> +++ Wed Sep 7 18:40:53 2016
> @@ -0,0 +1,9 @@
> +// Regression test: this used to abort() in SIGABRT handler in an
> infinite loop.
> +// RUN: %clangxx_asan -O0 %s -o %t &&
> +%env_asan_opts=handle_abort=1,abort_on_error=1 not --crash %run %t
> 2>&1
> +| FileCheck %s
> +
> +#include <stdlib.h>
> +
> +int main() {
> + abort();
> + // CHECK: ERROR: AddressSanitizer: ABRT }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list