[compiler-rt] r178872 - [sanitizer] found a bug by code inspection: CHECK(a=b) instead of CHECK(a==b). Was puzzled why lint did not catch it. Turns out this check was disabled for asan source. fix all cases and enable the check

David Blaikie dblaikie at gmail.com
Sun Apr 28 07:57:09 PDT 2013


On Apr 6, 2013 1:43 AM, "Kostya Serebryany" <kcc at google.com> wrote:
>
> Author: kcc
> Date: Fri Apr  5 09:40:25 2013
> New Revision: 178872
>
> URL: http://llvm.org/viewvc/llvm-project?rev=178872&view=rev
> Log:
> [sanitizer] found a bug by code inspection: CHECK(a=b) instead of
CHECK(a==b). Was puzzled why lint did not catch it. Turns out this check
was disabled for asan source. fix all cases and enable the check

I'm somewhat worried why /clang/ didn't catch this. (Probably some
necessary suppression due to macros, but perhaps we could tweak it further)
could you file a bug, perhaps?

>
> Modified:
>     compiler-rt/trunk/lib/asan/asan_fake_stack.cc
>     compiler-rt/trunk/lib/asan/asan_interceptors.cc
>     compiler-rt/trunk/lib/asan/asan_mac.cc
>     compiler-rt/trunk/lib/asan/asan_poisoning.cc
>     compiler-rt/trunk/lib/asan/asan_posix.cc
>     compiler-rt/trunk/lib/asan/asan_report.cc
>     compiler-rt/trunk/lib/asan/asan_rtl.cc
>     compiler-rt/trunk/lib/asan/asan_stats.cc
>     compiler-rt/trunk/lib/asan/asan_thread.cc
>     compiler-rt/trunk/lib/msan/msan_interceptors.cc
>     compiler-rt/trunk/lib/sanitizer_common/scripts/check_lint.sh
>
> Modified: compiler-rt/trunk/lib/asan/asan_fake_stack.cc
> URL:
http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_fake_stack.cc?rev=178872&r1=178871&r2=178872&view=diff
>
==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_fake_stack.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_fake_stack.cc Fri Apr  5 09:40:25 2013
> @@ -18,7 +18,7 @@
>  namespace __asan {
>
>  FakeStack::FakeStack() {
> -  CHECK(REAL(memset) != 0);
> +  CHECK(REAL(memset));
>    REAL(memset)(this, 0, sizeof(*this));
>  }
>
> @@ -150,9 +150,9 @@ void FakeStack::DeallocateFrame(FakeFram
>
>  void FakeStack::OnFree(uptr ptr, uptr size, uptr real_stack) {
>    FakeFrame *fake_frame = (FakeFrame*)ptr;
> -  CHECK(fake_frame->magic = kRetiredStackFrameMagic);
> -  CHECK(fake_frame->descr != 0);
> -  CHECK(fake_frame->size_minus_one == size - 1);
> +  CHECK_EQ(fake_frame->magic, kRetiredStackFrameMagic);
> +  CHECK_NE(fake_frame->descr, 0);
> +  CHECK_EQ(fake_frame->size_minus_one, size - 1);
>    PoisonShadow(ptr, size, kAsanStackAfterReturnMagic);
>  }
>
>
> Modified: compiler-rt/trunk/lib/asan/asan_interceptors.cc
> URL:
http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.cc?rev=178872&r1=178871&r2=178872&view=diff
>
==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_interceptors.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_interceptors.cc Fri Apr  5 09:40:25
2013
> @@ -522,7 +522,7 @@ static inline bool IsValidStrtolBase(int
>  }
>
>  static inline void FixRealStrtolEndptr(const char *nptr, char **endptr) {
> -  CHECK(endptr != 0);
> +  CHECK(endptr);
>    if (nptr == *endptr) {
>      // No digits were found at strtol call, we need to find out the last
>      // symbol accessed by strtoll on our own.
>
> Modified: compiler-rt/trunk/lib/asan/asan_mac.cc
> URL:
http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_mac.cc?rev=178872&r1=178871&r2=178872&view=diff
>
==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_mac.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_mac.cc Fri Apr  5 09:40:25 2013
> @@ -58,9 +58,9 @@ int GetMacosVersion() {
>    uptr len = 0, maxlen = sizeof(version) / sizeof(version[0]);
>    for (uptr i = 0; i < maxlen; i++) version[i] = '\0';
>    // Get the version length.
> -  CHECK(sysctl(mib, 2, 0, &len, 0, 0) != -1);
> -  CHECK(len < maxlen);
> -  CHECK(sysctl(mib, 2, version, &len, 0, 0) != -1);
> +  CHECK_NE(sysctl(mib, 2, 0, &len, 0, 0), -1);
> +  CHECK_LT(len, maxlen);
> +  CHECK_NE(sysctl(mib, 2, version, &len, 0, 0), -1);
>    switch (version[0]) {
>      case '9': return MACOS_VERSION_LEOPARD;
>      case '1': {
>
> Modified: compiler-rt/trunk/lib/asan/asan_poisoning.cc
> URL:
http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_poisoning.cc?rev=178872&r1=178871&r2=178872&view=diff
>
==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_poisoning.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_poisoning.cc Fri Apr  5 09:40:25 2013
> @@ -23,7 +23,7 @@ void PoisonShadow(uptr addr, uptr size,
>    CHECK(AddrIsInMem(addr));
>    CHECK(AddrIsAlignedByGranularity(addr + size));
>    CHECK(AddrIsInMem(addr + size - SHADOW_GRANULARITY));
> -  CHECK(REAL(memset) != 0);
> +  CHECK(REAL(memset));
>    FastPoisonShadow(addr, size, value);
>  }
>
>
> 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=178872&r1=178871&r2=178872&view=diff
>
==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_posix.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_posix.cc Fri Apr  5 09:40:25 2013
> @@ -43,7 +43,7 @@ static void MaybeInstallSigaction(int si
>    sigact.sa_sigaction = handler;
>    sigact.sa_flags = SA_SIGINFO;
>    if (flags()->use_sigaltstack) sigact.sa_flags |= SA_ONSTACK;
> -  CHECK(0 == REAL(sigaction)(signum, &sigact, 0));
> +  CHECK_EQ(0, REAL(sigaction)(signum, &sigact, 0));
>    if (flags()->verbosity >= 1) {
>      Report("Installed the sigaction for signal %d\n", signum);
>    }
> @@ -60,7 +60,7 @@ static void     ASAN_OnSIGSEGV(int, sigi
>
>  void SetAlternateSignalStack() {
>    stack_t altstack, oldstack;
> -  CHECK(0 == sigaltstack(0, &oldstack));
> +  CHECK_EQ(0, sigaltstack(0, &oldstack));
>    // If the alternate stack is already in place, do nothing.
>    if ((oldstack.ss_flags & SS_DISABLE) == 0) return;
>    // TODO(glider): the mapped stack should have the MAP_STACK flag in the
> @@ -70,7 +70,7 @@ void SetAlternateSignalStack() {
>    altstack.ss_sp = base;
>    altstack.ss_flags = 0;
>    altstack.ss_size = kAltStackSize;
> -  CHECK(0 == sigaltstack(&altstack, 0));
> +  CHECK_EQ(0, sigaltstack(&altstack, 0));
>    if (flags()->verbosity > 0) {
>      Report("Alternative stack for T%d set: [%p,%p)\n",
>             GetCurrentTidOrInvalid(),
> @@ -83,7 +83,7 @@ void UnsetAlternateSignalStack() {
>    altstack.ss_sp = 0;
>    altstack.ss_flags = SS_DISABLE;
>    altstack.ss_size = 0;
> -  CHECK(0 == sigaltstack(&altstack, &oldstack));
> +  CHECK_EQ(0, sigaltstack(&altstack, &oldstack));
>    UnmapOrDie(oldstack.ss_sp, oldstack.ss_size);
>  }
>
> @@ -103,7 +103,7 @@ static bool tsd_key_inited = false;
>  void AsanTSDInit(void (*destructor)(void *tsd)) {
>    CHECK(!tsd_key_inited);
>    tsd_key_inited = true;
> -  CHECK(0 == pthread_key_create(&tsd_key, destructor));
> +  CHECK_EQ(0, pthread_key_create(&tsd_key, destructor));
>  }
>
>  void *AsanTSDGet() {
>
> Modified: compiler-rt/trunk/lib/asan/asan_report.cc
> URL:
http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_report.cc?rev=178872&r1=178871&r2=178872&view=diff
>
==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_report.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_report.cc Fri Apr  5 09:40:25 2013
> @@ -298,7 +298,7 @@ bool DescribeAddressIfStack(uptr addr, u
>    // Report the number of stack objects.
>    char *p;
>    uptr n_objects = internal_simple_strtoll(frame_descr, &p, 10);
> -  CHECK(n_objects > 0);
> +  CHECK_GT(n_objects, 0);
>    Printf("  This frame has %zu object(s):\n", n_objects);
>    // Report all objects in this frame.
>    for (uptr i = 0; i < n_objects; i++) {
>
> Modified: compiler-rt/trunk/lib/asan/asan_rtl.cc
> URL:
http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_rtl.cc?rev=178872&r1=178871&r2=178872&view=diff
>
==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_rtl.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_rtl.cc Fri Apr  5 09:40:25 2013
> @@ -92,7 +92,7 @@ static void ParseFlagsFromString(Flags *
>    ParseFlag(str, &f->symbolize, "symbolize");
>    ParseFlag(str, &f->verbosity, "verbosity");
>    ParseFlag(str, &f->redzone, "redzone");
> -  CHECK(f->redzone >= 16);
> +  CHECK_GE(f->redzone, 16);
>    CHECK(IsPowerOfTwo(f->redzone));
>
>    ParseFlag(str, &f->debug, "debug");
> @@ -207,8 +207,8 @@ void ShowStatsAndAbort() {
>  // ---------------------- mmap -------------------- {{{1
>  // Reserve memory range [beg, end].
>  static void ReserveShadowMemoryRange(uptr beg, uptr end) {
> -  CHECK((beg % GetPageSizeCached()) == 0);
> -  CHECK(((end + 1) % GetPageSizeCached()) == 0);
> +  CHECK_EQ((beg % GetPageSizeCached()), 0);
> +  CHECK_EQ(((end + 1) % GetPageSizeCached()), 0);
>    uptr size = end - beg + 1;
>    void *res = MmapFixedNoReserve(beg, size);
>    if (res != (void*)beg) {
>
> Modified: compiler-rt/trunk/lib/asan/asan_stats.cc
> URL:
http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_stats.cc?rev=178872&r1=178871&r2=178872&view=diff
>
==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_stats.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_stats.cc Fri Apr  5 09:40:25 2013
> @@ -21,7 +21,7 @@
>  namespace __asan {
>
>  AsanStats::AsanStats() {
> -  CHECK(REAL(memset) != 0);
> +  CHECK(REAL(memset));
>    REAL(memset)(this, 0, sizeof(AsanStats));
>  }
>
>
> Modified: compiler-rt/trunk/lib/asan/asan_thread.cc
> URL:
http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_thread.cc?rev=178872&r1=178871&r2=178872&view=diff
>
==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_thread.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_thread.cc Fri Apr  5 09:40:25 2013
> @@ -129,7 +129,7 @@ thread_return_t AsanThread::ThreadStart(
>      // start_routine_ == 0 if we're on the main thread or on one of the
>      // OS X libdispatch worker threads. But nobody is supposed to call
>      // ThreadStart() for the worker threads.
> -    CHECK(tid() == 0);
> +    CHECK_EQ(tid(), 0);
>      return 0;
>    }
>
>
> Modified: compiler-rt/trunk/lib/msan/msan_interceptors.cc
> URL:
http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=178872&r1=178871&r2=178872&view=diff
>
==============================================================================
> --- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)
> +++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Fri Apr  5 09:40:25
2013
> @@ -829,7 +829,7 @@ static uptr sigactions[kMaxSignals];
>  static StaticSpinMutex sigactions_mu;
>
>  static void SignalHandler(int signo) {
> -  typedef void (*signal_cb)(int);
> +  typedef void (*signal_cb)(int x);
>    signal_cb cb = (signal_cb)sigactions[signo];
>    cb(signo);
>  }
>
> Modified: compiler-rt/trunk/lib/sanitizer_common/scripts/check_lint.sh
> URL:
http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/scripts/check_lint.sh?rev=178872&r1=178871&r2=178872&view=diff
>
==============================================================================
> --- compiler-rt/trunk/lib/sanitizer_common/scripts/check_lint.sh
(original)
> +++ compiler-rt/trunk/lib/sanitizer_common/scripts/check_lint.sh Fri Apr
 5 09:40:25 2013
> @@ -23,7 +23,7 @@ CPPLINT=${SCRIPT_DIR}/cpplint/cpplint.py
>  # TODO: remove some of these filters
>
 COMMON_LINT_FILTER=-build/include,-build/header_guard,-legal/copyright,-whitespace/comments,-readability/casting,\
>  -build/namespaces
>
-ASAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER},-readability/check,-runtime/int
> +ASAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int
>
 ASAN_TEST_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/sizeof,-runtime/int,-runtime/printf
>
 ASAN_LIT_TEST_LINT_FILTER=${ASAN_TEST_LINT_FILTER},-whitespace/line_length
>  TSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130428/8091dd04/attachment.html>


More information about the llvm-commits mailing list