<p dir="ltr"><br>
On Apr 6, 2013 1:43 AM, "Kostya Serebryany" <<a href="mailto:kcc@google.com">kcc@google.com</a>> wrote:<br>
><br>
> Author: kcc<br>
> Date: Fri Apr  5 09:40:25 2013<br>
> New Revision: 178872<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=178872&view=rev">http://llvm.org/viewvc/llvm-project?rev=178872&view=rev</a><br>
> Log:<br>
> [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</p>
<p dir="ltr">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?</p>
<p dir="ltr">><br>
> Modified:<br>
>     compiler-rt/trunk/lib/asan/asan_fake_stack.cc<br>
>     compiler-rt/trunk/lib/asan/asan_interceptors.cc<br>
>     compiler-rt/trunk/lib/asan/asan_mac.cc<br>
>     compiler-rt/trunk/lib/asan/asan_poisoning.cc<br>
>     compiler-rt/trunk/lib/asan/asan_posix.cc<br>
>     compiler-rt/trunk/lib/asan/asan_report.cc<br>
>     compiler-rt/trunk/lib/asan/asan_rtl.cc<br>
>     compiler-rt/trunk/lib/asan/asan_stats.cc<br>
>     compiler-rt/trunk/lib/asan/asan_thread.cc<br>
>     compiler-rt/trunk/lib/msan/msan_interceptors.cc<br>
>     compiler-rt/trunk/lib/sanitizer_common/scripts/check_lint.sh<br>
><br>
> Modified: compiler-rt/trunk/lib/asan/asan_fake_stack.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_fake_stack.cc?rev=178872&r1=178871&r2=178872&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_fake_stack.cc?rev=178872&r1=178871&r2=178872&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/asan/asan_fake_stack.cc (original)<br>
> +++ compiler-rt/trunk/lib/asan/asan_fake_stack.cc Fri Apr  5 09:40:25 2013<br>
> @@ -18,7 +18,7 @@<br>
>  namespace __asan {<br>
><br>
>  FakeStack::FakeStack() {<br>
> -  CHECK(REAL(memset) != 0);<br>
> +  CHECK(REAL(memset));<br>
>    REAL(memset)(this, 0, sizeof(*this));<br>
>  }<br>
><br>
> @@ -150,9 +150,9 @@ void FakeStack::DeallocateFrame(FakeFram<br>
><br>
>  void FakeStack::OnFree(uptr ptr, uptr size, uptr real_stack) {<br>
>    FakeFrame *fake_frame = (FakeFrame*)ptr;<br>
> -  CHECK(fake_frame->magic = kRetiredStackFrameMagic);<br>
> -  CHECK(fake_frame->descr != 0);<br>
> -  CHECK(fake_frame->size_minus_one == size - 1);<br>
> +  CHECK_EQ(fake_frame->magic, kRetiredStackFrameMagic);<br>
> +  CHECK_NE(fake_frame->descr, 0);<br>
> +  CHECK_EQ(fake_frame->size_minus_one, size - 1);<br>
>    PoisonShadow(ptr, size, kAsanStackAfterReturnMagic);<br>
>  }<br>
><br>
><br>
> Modified: compiler-rt/trunk/lib/asan/asan_interceptors.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.cc?rev=178872&r1=178871&r2=178872&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_interceptors.cc?rev=178872&r1=178871&r2=178872&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/asan/asan_interceptors.cc (original)<br>
> +++ compiler-rt/trunk/lib/asan/asan_interceptors.cc Fri Apr  5 09:40:25 2013<br>
> @@ -522,7 +522,7 @@ static inline bool IsValidStrtolBase(int<br>
>  }<br>
><br>
>  static inline void FixRealStrtolEndptr(const char *nptr, char **endptr) {<br>
> -  CHECK(endptr != 0);<br>
> +  CHECK(endptr);<br>
>    if (nptr == *endptr) {<br>
>      // No digits were found at strtol call, we need to find out the last<br>
>      // symbol accessed by strtoll on our own.<br>
><br>
> Modified: compiler-rt/trunk/lib/asan/asan_mac.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_mac.cc?rev=178872&r1=178871&r2=178872&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_mac.cc?rev=178872&r1=178871&r2=178872&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/asan/asan_mac.cc (original)<br>
> +++ compiler-rt/trunk/lib/asan/asan_mac.cc Fri Apr  5 09:40:25 2013<br>
> @@ -58,9 +58,9 @@ int GetMacosVersion() {<br>
>    uptr len = 0, maxlen = sizeof(version) / sizeof(version[0]);<br>
>    for (uptr i = 0; i < maxlen; i++) version[i] = '\0';<br>
>    // Get the version length.<br>
> -  CHECK(sysctl(mib, 2, 0, &len, 0, 0) != -1);<br>
> -  CHECK(len < maxlen);<br>
> -  CHECK(sysctl(mib, 2, version, &len, 0, 0) != -1);<br>
> +  CHECK_NE(sysctl(mib, 2, 0, &len, 0, 0), -1);<br>
> +  CHECK_LT(len, maxlen);<br>
> +  CHECK_NE(sysctl(mib, 2, version, &len, 0, 0), -1);<br>
>    switch (version[0]) {<br>
>      case '9': return MACOS_VERSION_LEOPARD;<br>
>      case '1': {<br>
><br>
> Modified: compiler-rt/trunk/lib/asan/asan_poisoning.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_poisoning.cc?rev=178872&r1=178871&r2=178872&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_poisoning.cc?rev=178872&r1=178871&r2=178872&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/asan/asan_poisoning.cc (original)<br>
> +++ compiler-rt/trunk/lib/asan/asan_poisoning.cc Fri Apr  5 09:40:25 2013<br>
> @@ -23,7 +23,7 @@ void PoisonShadow(uptr addr, uptr size,<br>
>    CHECK(AddrIsInMem(addr));<br>
>    CHECK(AddrIsAlignedByGranularity(addr + size));<br>
>    CHECK(AddrIsInMem(addr + size - SHADOW_GRANULARITY));<br>
> -  CHECK(REAL(memset) != 0);<br>
> +  CHECK(REAL(memset));<br>
>    FastPoisonShadow(addr, size, value);<br>
>  }<br>
><br>
><br>
> Modified: compiler-rt/trunk/lib/asan/asan_posix.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_posix.cc?rev=178872&r1=178871&r2=178872&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_posix.cc?rev=178872&r1=178871&r2=178872&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/asan/asan_posix.cc (original)<br>
> +++ compiler-rt/trunk/lib/asan/asan_posix.cc Fri Apr  5 09:40:25 2013<br>
> @@ -43,7 +43,7 @@ static void MaybeInstallSigaction(int si<br>
>    sigact.sa_sigaction = handler;<br>
>    sigact.sa_flags = SA_SIGINFO;<br>
>    if (flags()->use_sigaltstack) sigact.sa_flags |= SA_ONSTACK;<br>
> -  CHECK(0 == REAL(sigaction)(signum, &sigact, 0));<br>
> +  CHECK_EQ(0, REAL(sigaction)(signum, &sigact, 0));<br>
>    if (flags()->verbosity >= 1) {<br>
>      Report("Installed the sigaction for signal %d\n", signum);<br>
>    }<br>
> @@ -60,7 +60,7 @@ static void     ASAN_OnSIGSEGV(int, sigi<br>
><br>
>  void SetAlternateSignalStack() {<br>
>    stack_t altstack, oldstack;<br>
> -  CHECK(0 == sigaltstack(0, &oldstack));<br>
> +  CHECK_EQ(0, sigaltstack(0, &oldstack));<br>
>    // If the alternate stack is already in place, do nothing.<br>
>    if ((oldstack.ss_flags & SS_DISABLE) == 0) return;<br>
>    // TODO(glider): the mapped stack should have the MAP_STACK flag in the<br>
> @@ -70,7 +70,7 @@ void SetAlternateSignalStack() {<br>
>    altstack.ss_sp = base;<br>
>    altstack.ss_flags = 0;<br>
>    altstack.ss_size = kAltStackSize;<br>
> -  CHECK(0 == sigaltstack(&altstack, 0));<br>
> +  CHECK_EQ(0, sigaltstack(&altstack, 0));<br>
>    if (flags()->verbosity > 0) {<br>
>      Report("Alternative stack for T%d set: [%p,%p)\n",<br>
>             GetCurrentTidOrInvalid(),<br>
> @@ -83,7 +83,7 @@ void UnsetAlternateSignalStack() {<br>
>    altstack.ss_sp = 0;<br>
>    altstack.ss_flags = SS_DISABLE;<br>
>    altstack.ss_size = 0;<br>
> -  CHECK(0 == sigaltstack(&altstack, &oldstack));<br>
> +  CHECK_EQ(0, sigaltstack(&altstack, &oldstack));<br>
>    UnmapOrDie(oldstack.ss_sp, oldstack.ss_size);<br>
>  }<br>
><br>
> @@ -103,7 +103,7 @@ static bool tsd_key_inited = false;<br>
>  void AsanTSDInit(void (*destructor)(void *tsd)) {<br>
>    CHECK(!tsd_key_inited);<br>
>    tsd_key_inited = true;<br>
> -  CHECK(0 == pthread_key_create(&tsd_key, destructor));<br>
> +  CHECK_EQ(0, pthread_key_create(&tsd_key, destructor));<br>
>  }<br>
><br>
>  void *AsanTSDGet() {<br>
><br>
> Modified: compiler-rt/trunk/lib/asan/asan_report.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_report.cc?rev=178872&r1=178871&r2=178872&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_report.cc?rev=178872&r1=178871&r2=178872&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/asan/asan_report.cc (original)<br>
> +++ compiler-rt/trunk/lib/asan/asan_report.cc Fri Apr  5 09:40:25 2013<br>
> @@ -298,7 +298,7 @@ bool DescribeAddressIfStack(uptr addr, u<br>
>    // Report the number of stack objects.<br>
>    char *p;<br>
>    uptr n_objects = internal_simple_strtoll(frame_descr, &p, 10);<br>
> -  CHECK(n_objects > 0);<br>
> +  CHECK_GT(n_objects, 0);<br>
>    Printf("  This frame has %zu object(s):\n", n_objects);<br>
>    // Report all objects in this frame.<br>
>    for (uptr i = 0; i < n_objects; i++) {<br>
><br>
> Modified: compiler-rt/trunk/lib/asan/asan_rtl.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_rtl.cc?rev=178872&r1=178871&r2=178872&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_rtl.cc?rev=178872&r1=178871&r2=178872&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/asan/asan_rtl.cc (original)<br>
> +++ compiler-rt/trunk/lib/asan/asan_rtl.cc Fri Apr  5 09:40:25 2013<br>
> @@ -92,7 +92,7 @@ static void ParseFlagsFromString(Flags *<br>
>    ParseFlag(str, &f->symbolize, "symbolize");<br>
>    ParseFlag(str, &f->verbosity, "verbosity");<br>
>    ParseFlag(str, &f->redzone, "redzone");<br>
> -  CHECK(f->redzone >= 16);<br>
> +  CHECK_GE(f->redzone, 16);<br>
>    CHECK(IsPowerOfTwo(f->redzone));<br>
><br>
>    ParseFlag(str, &f->debug, "debug");<br>
> @@ -207,8 +207,8 @@ void ShowStatsAndAbort() {<br>
>  // ---------------------- mmap -------------------- {{{1<br>
>  // Reserve memory range [beg, end].<br>
>  static void ReserveShadowMemoryRange(uptr beg, uptr end) {<br>
> -  CHECK((beg % GetPageSizeCached()) == 0);<br>
> -  CHECK(((end + 1) % GetPageSizeCached()) == 0);<br>
> +  CHECK_EQ((beg % GetPageSizeCached()), 0);<br>
> +  CHECK_EQ(((end + 1) % GetPageSizeCached()), 0);<br>
>    uptr size = end - beg + 1;<br>
>    void *res = MmapFixedNoReserve(beg, size);<br>
>    if (res != (void*)beg) {<br>
><br>
> Modified: compiler-rt/trunk/lib/asan/asan_stats.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_stats.cc?rev=178872&r1=178871&r2=178872&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_stats.cc?rev=178872&r1=178871&r2=178872&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/asan/asan_stats.cc (original)<br>
> +++ compiler-rt/trunk/lib/asan/asan_stats.cc Fri Apr  5 09:40:25 2013<br>
> @@ -21,7 +21,7 @@<br>
>  namespace __asan {<br>
><br>
>  AsanStats::AsanStats() {<br>
> -  CHECK(REAL(memset) != 0);<br>
> +  CHECK(REAL(memset));<br>
>    REAL(memset)(this, 0, sizeof(AsanStats));<br>
>  }<br>
><br>
><br>
> Modified: compiler-rt/trunk/lib/asan/asan_thread.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_thread.cc?rev=178872&r1=178871&r2=178872&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_thread.cc?rev=178872&r1=178871&r2=178872&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/asan/asan_thread.cc (original)<br>
> +++ compiler-rt/trunk/lib/asan/asan_thread.cc Fri Apr  5 09:40:25 2013<br>
> @@ -129,7 +129,7 @@ thread_return_t AsanThread::ThreadStart(<br>
>      // start_routine_ == 0 if we're on the main thread or on one of the<br>
>      // OS X libdispatch worker threads. But nobody is supposed to call<br>
>      // ThreadStart() for the worker threads.<br>
> -    CHECK(tid() == 0);<br>
> +    CHECK_EQ(tid(), 0);<br>
>      return 0;<br>
>    }<br>
><br>
><br>
> Modified: compiler-rt/trunk/lib/msan/msan_interceptors.cc<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=178872&r1=178871&r2=178872&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=178872&r1=178871&r2=178872&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)<br>
> +++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Fri Apr  5 09:40:25 2013<br>
> @@ -829,7 +829,7 @@ static uptr sigactions[kMaxSignals];<br>
>  static StaticSpinMutex sigactions_mu;<br>
><br>
>  static void SignalHandler(int signo) {<br>
> -  typedef void (*signal_cb)(int);<br>
> +  typedef void (*signal_cb)(int x);<br>
>    signal_cb cb = (signal_cb)sigactions[signo];<br>
>    cb(signo);<br>
>  }<br>
><br>
> Modified: compiler-rt/trunk/lib/sanitizer_common/scripts/check_lint.sh<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/scripts/check_lint.sh?rev=178872&r1=178871&r2=178872&view=diff">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/scripts/check_lint.sh?rev=178872&r1=178871&r2=178872&view=diff</a><br>

> ==============================================================================<br>
> --- compiler-rt/trunk/lib/sanitizer_common/scripts/check_lint.sh (original)<br>
> +++ compiler-rt/trunk/lib/sanitizer_common/scripts/check_lint.sh Fri Apr  5 09:40:25 2013<br>
> @@ -23,7 +23,7 @@ CPPLINT=${SCRIPT_DIR}/cpplint/cpplint.py<br>
>  # TODO: remove some of these filters<br>
>  COMMON_LINT_FILTER=-build/include,-build/header_guard,-legal/copyright,-whitespace/comments,-readability/casting,\<br>
>  -build/namespaces<br>
> -ASAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER},-readability/check,-runtime/int<br>
> +ASAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/int<br>
>  ASAN_TEST_LINT_FILTER=${COMMON_LINT_FILTER},-runtime/sizeof,-runtime/int,-runtime/printf<br>
>  ASAN_LIT_TEST_LINT_FILTER=${ASAN_TEST_LINT_FILTER},-whitespace/line_length<br>
>  TSAN_RTL_LINT_FILTER=${COMMON_LINT_FILTER}<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</p>