llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.69k stars 11.86k forks source link

[asan] Multiple failing tests with COMPILER_RT_DEBUG=ON #46206

Open arichardson opened 4 years ago

arichardson commented 4 years ago
Bugzilla Link 46862
Version unspecified
OS All

Extended Description

I am seeing the following test failures running check-asan on Linux x86_64 (Ubuntu 18.04) with commit 1956cf1042d3c406d9e9cefe47d3b43adf2bdbe1 from earlier today. I guess there is no CI testing of this configuration?

These tests are failing: AddressSanitizer-x86_64-linux :: TestCases/Linux/activation-options.cpp AddressSanitizer-x86_64-linux :: TestCases/Linux/odr-violation.cpp AddressSanitizer-x86_64-linux :: TestCases/Linux/odr-vtable.cpp AddressSanitizer-x86_64-linux :: TestCases/Posix/start-deactivated.cpp AddressSanitizer-x86_64-linux :: TestCases/handle_noreturn_bug.cpp

Backtraces:

AddressSanitizer-x86_64-linux :: TestCases/Linux/activation-options.cpp ==31316==AddressSanitizer CHECK failed: /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_poisoning.h:81 "((CanPoisonMemory())) != (0)" (0x0, 0x0)

​0 0x50eb9b in __asan::AsanCheckFailed(char const, int, char const, unsigned long long, unsigned long long) /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_rtl.cpp:73:5

#​1 0x52bae3 in __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_termination.cpp:78:5
#​2 0x510e13 in __asan::FastPoisonShadowPartialRightRedzone(unsigned long, unsigned long, unsigned long, unsigned char) /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_poisoning.h:81:3
#​3 0x510e13 in __asan::AsanThread::ClearShadowForThreadStackAndTLS() /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_thread.cpp:312
#​4 0x51160d in __asan::AsanThread::Init(__asan::AsanThread::InitOptions const*) /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_thread.cpp:230:3
#​5 0x5118da in __asan::AsanThread::ThreadStart(unsigned long long, __sanitizer::atomic_uintptr_t*) /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_thread.cpp:247:3
#​6 0x511a26 in __asan::CreateMainThread() /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_thread.cpp:280:16
#​7 0x50e463 in __asan::AsanInitInternal() /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_rtl.cpp:496:29
#​8 0x50e92d in __asan_init /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_rtl.cpp:638:3
#​9 0x7f1c9c751855 in _dl_init /build/glibc-2ORdQG/glibc-2.27/elf/dl-init.c:104
#​10 0x7f1c9c7420c9  (/lib64/ld-linux-x86-64.so.2+0x10c9)

AddressSanitizer-x86_64-linux :: TestCases/Linux/odr-violation.cpp

AddressSanitizer: nested bug in the same thread, aborting.

AddressSanitizer-x86_64-linux :: TestCases/Linux/odr-vtable.cpp

AddressSanitizer: nested bug in the same thread, aborting.

AddressSanitizer-x86_64-linux :: TestCases/Posix/start-deactivated.cpp ==30127==AddressSanitizer CHECK failed: /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_poisoning.h:81 "((CanPoisonMemory())) != (0)" (0x0, 0x0)

​0 0x50eb9b in __asan::AsanCheckFailed(char const, int, char const, unsigned long long, unsigned long long) /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_rtl.cpp:73:5

#​1 0x52bae3 in __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_termination.cpp:78:5
#​2 0x510e13 in __asan::FastPoisonShadowPartialRightRedzone(unsigned long, unsigned long, unsigned long, unsigned char) /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_poisoning.h:81:3
#​3 0x510e13 in __asan::AsanThread::ClearShadowForThreadStackAndTLS() /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_thread.cpp:312
#​4 0x51160d in __asan::AsanThread::Init(__asan::AsanThread::InitOptions const*) /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_thread.cpp:230:3
#​5 0x5118da in __asan::AsanThread::ThreadStart(unsigned long long, __sanitizer::atomic_uintptr_t*) /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_thread.cpp:247:3
#​6 0x511a26 in __asan::CreateMainThread() /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_thread.cpp:280:16
#​7 0x50e463 in __asan::AsanInitInternal() /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_rtl.cpp:496:29
#​8 0x50e92d in __asan_init /local/scratch/alr48/cheri/upstream-llvm-project/compiler-rt/lib/asan/asan_rtl.cpp:638:3
#​9 0x7f3686cbf855 in _dl_init /build/glibc-2ORdQG/glibc-2.27/elf/dl-init.c:104
#​10 0x7f3686cb00c9  (/lib64/ld-linux-x86-64.so.2+0x10c9)

AddressSanitizer-x86_64-linux :: TestCases/handle_noreturn_bug.cpp

rorth commented 2 years ago

I've noticed that the situation has changed: e.g. on amd64-pc-solaris2.11 two of those tests XPASS now (and the 64-bit tests don't run since that ASan port is currently 32-bit only):

Unexpectedly Passed Tests (4):
  AddressSanitizer-i386-sunos :: TestCases/Posix/start-deactivated.cpp
  AddressSanitizer-i386-sunos :: TestCases/handle_noreturn_bug.cpp
  AddressSanitizer-i386-sunos-dynamic :: TestCases/Posix/start-deactivated.cpp
  AddressSanitizer-i386-sunos-dynamic :: TestCases/handle_noreturn_bug.cpp

On x86_64-pc-linux-gnu, all 5 tests above XPASS:

Unexpectedly Passed Tests (15):
  AddressSanitizer-i386-linux :: TestCases/Linux/activation-options.cpp
  AddressSanitizer-i386-linux :: TestCases/Linux/odr-violation.cpp
  AddressSanitizer-i386-linux :: TestCases/Linux/odr-vtable.cpp
  AddressSanitizer-i386-linux :: TestCases/Posix/start-deactivated.cpp
  AddressSanitizer-i386-linux :: TestCases/handle_noreturn_bug.cpp
  AddressSanitizer-i386-linux-dynamic :: TestCases/Linux/activation-options.cpp
  AddressSanitizer-i386-linux-dynamic :: TestCases/Linux/odr-violation.cpp
  AddressSanitizer-i386-linux-dynamic :: TestCases/Linux/odr-vtable.cpp
  AddressSanitizer-i386-linux-dynamic :: TestCases/Posix/start-deactivated.cpp
  AddressSanitizer-i386-linux-dynamic :: TestCases/handle_noreturn_bug.cpp
  AddressSanitizer-x86_64-linux :: TestCases/Linux/activation-options.cpp
  AddressSanitizer-x86_64-linux :: TestCases/Linux/odr-violation.cpp
  AddressSanitizer-x86_64-linux :: TestCases/Linux/odr-vtable.cpp
  AddressSanitizer-x86_64-linux :: TestCases/Posix/start-deactivated.cpp
  AddressSanitizer-x86_64-linux :: TestCases/handle_noreturn_bug.cpp

but for AddressSanitizer-x86_64-linux-dynamic. Quite ugly to handle in the testsuite, unfortunately.