[compiler-rt] r314041 - [lsan] Deadly signal handler for lsan

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 27 14:58:10 PDT 2017


I don't believe that it has anything to do with compiler-rt.
It's in InstCombiner, and the range has several related patches.

+ctopper It's more likely r314025

On Wed, Sep 27, 2017 at 2:41 PM, Evgenii Stepanov <eugeni.stepanov at gmail.com
> wrote:

> Are you a 100% sure you've got the right change? This one only touches
> the runtime support library, and error by the buildbot link shows a
> compiler crash.
>
> On Wed, Sep 27, 2017 at 2:32 PM, Mike Edwards via llvm-commits
> <llvm-commits at lists.llvm.org> wrote:
> > Hi Vitaly,
> > We are seeing a bot failure with this commit.  The particular bot which
> > caught this error takes quite some time to run and this was bundled with
> > around 50 other commits so I apologize for the amount of time it took to
> get
> > the error to you.  The bot failure can be seen here:
> >
> > http://green.lab.llvm.org/green/job/clang-stage2-cmake-RgSan_build/5097/
> >
> > I have attached a reproducer to this email and here is the command line
> > invocation used to reproduce the issue:
> >
> > <path to compiler built on r314041>/bin/clang++  -fPIC
> > -fvisibility-inlines-hidden -Werror=date-time
> > -Werror=unguarded-availability-new -std=c++11 -Wall -W
> -Wno-unused-parameter
> > -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic
> > -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor
> > -Wdelete-non-virtual-dtor -Wstring-conversion -fno-omit-frame-pointer
> > -fsanitize=address,undefined -fno-sanitize=vptr,function
> > -fno-sanitize-recover=all -fsanitize-address-use-after-scope
> > -fcolor-diagnostics -O2 -g  -fno-exceptions -fno-rtti -o /dev/null -c
> > BinaryStreamError.ii
> >
> > This bot has been broken for almost 5 days now (this was my fault as it
> took
> > so much time to reproduce the issue) so if you could have a look and get
> a
> > patch up as soon as possible it would be greatly appreciated.
> >
> > Respectfully,
> > Mike Edwards
> >
> > On Fri, Sep 22, 2017 at 3:57 PM, Vitaly Buka via llvm-commits
> > <llvm-commits at lists.llvm.org> wrote:
> >>
> >> Author: vitalybuka
> >> Date: Fri Sep 22 15:57:48 2017
> >> New Revision: 314041
> >>
> >> URL: http://llvm.org/viewvc/llvm-project?rev=314041&view=rev
> >> Log:
> >> [lsan] Deadly signal handler for lsan
> >>
> >> Summary: Part of https://github.com/google/sanitizers/issues/637
> >>
> >> Reviewers: eugenis, alekseyshl
> >>
> >> Subscribers: llvm-commits, dberris, kubamracek, krytarowski
> >>
> >> Differential Revision: https://reviews.llvm.org/D37608
> >>
> >> Modified:
> >>     compiler-rt/trunk/lib/lsan/lsan.cc
> >>     compiler-rt/trunk/lib/lsan/lsan_interceptors.cc
> >>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
> >>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_libcdep.cc
> >>
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Linux/allow_user_segv.cc
> >>     compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/assert.cc
> >>     compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/ill.cc
> >>
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/dedup_token_length_test.cc
> >>
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/dump_instruction_bytes.cc
> >>     compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/fpe.cc
> >>
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/sanitizer_set_report_fd_test.cc
> >>
> >> Modified: compiler-rt/trunk/lib/lsan/lsan.cc
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
> lsan/lsan.cc?rev=314041&r1=314040&r2=314041&view=diff
> >>
> >> ============================================================
> ==================
> >> --- compiler-rt/trunk/lib/lsan/lsan.cc (original)
> >> +++ compiler-rt/trunk/lib/lsan/lsan.cc Fri Sep 22 15:57:48 2017
> >> @@ -65,6 +65,18 @@ static void InitializeFlags() {
> >>    if (common_flags()->help) parser.PrintFlagDescriptions();
> >>  }
> >>
> >> +static void OnStackUnwind(const SignalContext &sig, const void *,
> >> +                          BufferedStackTrace *stack) {
> >> +  GetStackTraceWithPcBpAndContext(stack, kStackTraceMax, sig.pc,
> sig.bp,
> >> +                                  sig.context,
> >> +                                  common_flags()->fast_unwind_
> on_fatal);
> >> +}
> >> +
> >> +void LsanOnDeadlySignal(int signo, void *siginfo, void *context) {
> >> +  HandleDeadlySignal(siginfo, context, GetCurrentThread(),
> >> &OnStackUnwind,
> >> +                     nullptr);
> >> +}
> >> +
> >>  extern "C" void __lsan_init() {
> >>    CHECK(!lsan_init_is_running);
> >>    if (lsan_inited)
> >> @@ -80,6 +92,7 @@ extern "C" void __lsan_init() {
> >>    InitTlsSize();
> >>    InitializeInterceptors();
> >>    InitializeThreadRegistry();
> >> +  InstallDeadlySignalHandlers(LsanOnDeadlySignal);
> >>    u32 tid = ThreadCreate(0, 0, true);
> >>    CHECK_EQ(tid, 0);
> >>    ThreadStart(tid, GetTid());
> >>
> >> Modified: compiler-rt/trunk/lib/lsan/lsan_interceptors.cc
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
> lsan/lsan_interceptors.cc?rev=314041&r1=314040&r2=314041&view=diff
> >>
> >> ============================================================
> ==================
> >> --- compiler-rt/trunk/lib/lsan/lsan_interceptors.cc (original)
> >> +++ compiler-rt/trunk/lib/lsan/lsan_interceptors.cc Fri Sep 22 15:57:48
> >> 2017
> >> @@ -401,9 +401,14 @@ INTERCEPTOR(void, _exit, int status) {
> >>    REAL(_exit)(status);
> >>  }
> >>
> >> +#define COMMON_INTERCEPT_FUNCTION(name) INTERCEPT_FUNCTION(name)
> >> +#include "sanitizer_common/sanitizer_signal_interceptors.inc"
> >> +
> >>  namespace __lsan {
> >>
> >>  void InitializeInterceptors() {
> >> +  InitializeSignalInterceptors();
> >> +
> >>    INTERCEPT_FUNCTION(malloc);
> >>    INTERCEPT_FUNCTION(free);
> >>    LSAN_MAYBE_INTERCEPT_CFREE;
> >>
> >> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
> sanitizer_common/sanitizer_common.h?rev=314041&r1=314040&
> r2=314041&view=diff
> >>
> >> ============================================================
> ==================
> >> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
> (original)
> >> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h Fri Sep
> 22
> >> 15:57:48 2017
> >> @@ -318,15 +318,24 @@ void SetSoftRssLimitExceededCallback(voi
> >>  typedef void (*SignalHandlerType)(int, void *, void *);
> >>  HandleSignalMode GetHandleSignalMode(int signum);
> >>  void InstallDeadlySignalHandlers(SignalHandlerType handler);
> >> +
> >>  // Signal reporting.
> >> -void StartReportDeadlySignal();
> >>  // Each sanitizer uses slightly different implementation of stack
> >> unwinding.
> >>  typedef void (*UnwindSignalStackCallbackType)(const SignalContext
> &sig,
> >>                                                const void
> >> *callback_context,
> >>                                                BufferedStackTrace
> *stack);
> >> +// Print deadly signal report and die.
> >> +void HandleDeadlySignal(void *siginfo, void *context, u32 tid,
> >> +                        UnwindSignalStackCallbackType unwind,
> >> +                        const void *unwind_context);
> >> +
> >> +// Part of HandleDeadlySignal, exposed for asan.
> >> +void StartReportDeadlySignal();
> >> +// Part of HandleDeadlySignal, exposed for asan.
> >>  void ReportDeadlySignal(const SignalContext &sig, u32 tid,
> >>                          UnwindSignalStackCallbackType unwind,
> >>                          const void *unwind_context);
> >> +
> >>  // Alternative signal stack (POSIX-only).
> >>  void SetAlternateSignalStack();
> >>  void UnsetAlternateSignalStack();
> >>
> >> Modified:
> >> compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_libcdep.cc
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
> sanitizer_common/sanitizer_common_libcdep.cc?rev=314041&
> r1=314040&r2=314041&view=diff
> >>
> >> ============================================================
> ==================
> >> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_libcdep.cc
> >> (original)
> >> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_libcdep.cc
> Fri
> >> Sep 22 15:57:48 2017
> >> @@ -254,6 +254,18 @@ void ReportDeadlySignal(const SignalCont
> >>    else
> >>      ReportDeadlySignalImpl(sig, tid, unwind, unwind_context);
> >>  }
> >> +
> >> +void HandleDeadlySignal(void *siginfo, void *context, u32 tid,
> >> +                        UnwindSignalStackCallbackType unwind,
> >> +                        const void *unwind_context) {
> >> +  StartReportDeadlySignal();
> >> +  ScopedErrorReportLock rl;
> >> +  SignalContext sig(siginfo, context);
> >> +  ReportDeadlySignal(sig, tid, unwind, unwind_context);
> >> +  Report("ABORTING\n");
> >> +  Die();
> >> +}
> >> +
> >>  #endif  // !SANITIZER_FUCHSIA && !SANITIZER_GO
> >>
> >>  void WriteToSyslog(const char *msg) {
> >>
> >> Modified:
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Linux/allow_user_segv.cc
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/
> test/sanitizer_common/TestCases/Linux/allow_user_
> segv.cc?rev=314041&r1=314040&r2=314041&view=diff
> >>
> >> ============================================================
> ==================
> >> ---
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Linux/allow_user_segv.cc
> >> (original)
> >> +++
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Linux/allow_user_segv.cc
> >> Fri Sep 22 15:57:48 2017
> >> @@ -18,7 +18,6 @@
> >>  // clang-format on
> >>
> >>  // Remove when fixed: https://github.com/google/sanitizers/issues/637
> >> -// XFAIL: lsan
> >>  // XFAIL: msan
> >>  // XFAIL: tsan
> >>  // XFAIL: ubsan
> >>
> >> Modified:
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/assert.cc
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/
> test/sanitizer_common/TestCases/Linux/assert.cc?rev=
> 314041&r1=314040&r2=314041&view=diff
> >>
> >> ============================================================
> ==================
> >> --- compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/assert.cc
> >> (original)
> >> +++ compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/assert.cc
> Fri
> >> Sep 22 15:57:48 2017
> >> @@ -7,11 +7,11 @@
> >>  // RUN: %env_tool_opts=handle_abort=1 not         %run %t 2>&1 |
> >> FileCheck --check-prefix=CHECK1 %s
> >>  // clang-format on
> >>
> >> -// FIXME: implement in other sanitizers, not just asan.
> >> +// FIXME: implement in other sanitizers.
> >>  // XFAIL: msan
> >> -// XFAIL: lsan
> >>  // XFAIL: tsan
> >>  // XFAIL: ubsan
> >> +
> >>  #include <assert.h>
> >>  #include <stdio.h>
> >>  #include <sanitizer/asan_interface.h>
> >>
> >> Modified: compiler-rt/trunk/test/sanitizer_common/TestCases/
> Linux/ill.cc
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/
> test/sanitizer_common/TestCases/Linux/ill.cc?rev=
> 314041&r1=314040&r2=314041&view=diff
> >>
> >> ============================================================
> ==================
> >> --- compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/ill.cc
> >> (original)
> >> +++ compiler-rt/trunk/test/sanitizer_common/TestCases/Linux/ill.cc Fri
> Sep
> >> 22 15:57:48 2017
> >> @@ -7,9 +7,8 @@
> >>  // RUN: %env_tool_opts=handle_sigill=1 not         %run %t 2>&1 |
> >> FileCheck --check-prefix=CHECK1 %s
> >>  // clang-format on
> >>
> >> -// FIXME: implement in other sanitizers, not just asan.
> >> +// FIXME: implement in other sanitizers.
> >>  // XFAIL: msan
> >> -// XFAIL: lsan
> >>  // XFAIL: tsan
> >>  // XFAIL: ubsan
> >>  //
> >>
> >> Modified:
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/dedup_token_length_test.cc
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/
> test/sanitizer_common/TestCases/Posix/dedup_token_
> length_test.cc?rev=314041&r1=314040&r2=314041&view=diff
> >>
> >> ============================================================
> ==================
> >> ---
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/dedup_token_length_test.cc
> >> (original)
> >> +++
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/dedup_token_length_test.cc
> >> Fri Sep 22 15:57:48 2017
> >> @@ -9,7 +9,6 @@
> >>  // REQUIRES: stable-runtime
> >>  // FIXME: implement SEGV handler in other sanitizers, not just asan.
> >>  // XFAIL: msan
> >> -// XFAIL: lsan
> >>  // XFAIL: tsan
> >>  // XFAIL: ubsan
> >>
> >>
> >> Modified:
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/dump_instruction_bytes.cc
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/
> test/sanitizer_common/TestCases/Posix/dump_instruction_bytes.cc?rev=
> 314041&r1=314040&r2=314041&view=diff
> >>
> >> ============================================================
> ==================
> >> ---
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/dump_instruction_bytes.cc
> >> (original)
> >> +++
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/dump_instruction_bytes.cc
> >> Fri Sep 22 15:57:48 2017
> >> @@ -8,7 +8,10 @@
> >>  // clang-format on
> >>
> >>  // REQUIRES: x86-target-arch
> >> -// XFAIL: lsan, msan, tsan, ubsan
> >> +// FIXME: implement in other sanitizers.
> >> +// XFAIL: msan
> >> +// XFAIL: tsan
> >> +// XFAIL: ubsan
> >>
> >>  int main() {
> >>  #if defined(__x86_64__)
> >>
> >> Modified: compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/fpe.cc
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/
> test/sanitizer_common/TestCases/Posix/fpe.cc?rev=
> 314041&r1=314040&r2=314041&view=diff
> >>
> >> ============================================================
> ==================
> >> --- compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/fpe.cc
> >> (original)
> >> +++ compiler-rt/trunk/test/sanitizer_common/TestCases/Posix/fpe.cc Fri
> Sep
> >> 22 15:57:48 2017
> >> @@ -5,7 +5,6 @@
> >>  // RUN: %env_tool_opts=handle_sigfpe=1 not         %run %t 2>&1 |
> >> FileCheck --check-prefix=CHECK1 %s
> >>  // FIXME: implement in other sanitizers, not just asan.
> >>  // XFAIL: msan
> >> -// XFAIL: lsan
> >>  // XFAIL: tsan
> >>  // XFAIL: ubsan
> >>  //
> >>
> >> Modified:
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/sanitizer_set_report_fd_test.cc
> >> URL:
> >> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/
> test/sanitizer_common/TestCases/Posix/sanitizer_set_
> report_fd_test.cc?rev=314041&r1=314040&r2=314041&view=diff
> >>
> >> ============================================================
> ==================
> >> ---
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/sanitizer_set_report_fd_test.cc
> >> (original)
> >> +++
> >> compiler-rt/trunk/test/sanitizer_common/TestCases/
> Posix/sanitizer_set_report_fd_test.cc
> >> Fri Sep 22 15:57:48 2017
> >> @@ -8,7 +8,6 @@
> >>  // XFAIL: android && i386-target-arch && asan
> >>  // FIXME: implement SEGV handler in other sanitizers, not just asan.
> >>  // XFAIL: msan
> >> -// XFAIL: lsan
> >>  // XFAIL: tsan
> >>  // XFAIL: ubsan
> >>
> >>
> >>
> >> _______________________________________________
> >> llvm-commits mailing list
> >> llvm-commits at lists.llvm.org
> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> >
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170927/27dc3266/attachment.html>


More information about the llvm-commits mailing list