Asan self host problems: Failed to deallocate

Trying to run a self host “ninja check-clang” with ASan enabled I hit a /lot/ of errors like this (strangely I hit none of these in check-llvm, only in check-clang):

Any ideas?

==10525==ERROR: AddressSanitizer failed to deallocate 0x10800 (67584) bytes at address 0x631000014800

==10525==AddressSanitizer CHECK failed: /usr/local/google/home/blaikie/dev/llvm/src/projects/compiler-rt/lib/sanitizer_common/sanitizer_posix.cc:143 “((“unable to unmap” && 0)) != (0)” (0x0, 0x0)

#0 0x51f42f in __asan::AsanCheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /usr/local/google/home/blaikie/dev/llvm/src/projects/compiler-rt/lib/asan/asan_rtl.cc:69:3

#1 0x532eff in __sanitizer::CheckFailed(char const*, int, char const*, unsigned long long, unsigned long long) /usr/local/google/home/blaikie/dev/llvm/src/projects/compiler-rt/lib/sanitizer_common/sanitizer_termination.cc:79:5

#2 0x52cf61 in __sanitizer::UnmapOrDie(void*, unsigned long) /usr/local/google/home/blaikie/dev/llvm/src/projects/compiler-rt/lib/sanitizer_common/sanitizer_posix.cc:143:5

#3 0x53877f in __sanitizer::UnsetAlternateSignalStack() /usr/local/google/home/blaikie/dev/llvm/src/projects/compiler-rt/lib/sanitizer_common/sanitizer_posix_libcdep.cc:186:3

#4 0x5209f5 in __asan::AsanThread::Destroy() /usr/local/google/home/blaikie/dev/llvm/src/projects/compiler-rt/lib/asan/asan_thread.cc:110:40

#5 0x7fd75802df81 in __nptl_deallocate_tsd /build/eglibc-oGUzwX/eglibc-2.19/nptl/pthread_create.c:158

#6 0x7fd75802e196 in start_thread /build/eglibc-oGUzwX/eglibc-2.19/nptl/pthread_create.c:325

#7 0x7fd744ee337c in clone /build/eglibc-oGUzwX/eglibc-2.19/misc/…/sysdeps/unix/sysv/linux/x86_64/clone.S:111

Looks weird.

  1. Is LLD involved here somehow? Peter has just fixed an asan-unfriendliness in LLD: https://reviews.llvm.org/rL294977, although this reports does not look related.
  2. Could you provide the exact repro steps? (cmake, etc for both host and bootstrap build)?

I wish there was something like the line in config.log that would show the CMake command, but instead I can at least show you the CMakeCache files for my release build and asan build (attached to this email).

No lld, so far as I know - believe I’m using gold at the moment for both builds.

Did just reproduce this with a clean release build and a clean asanified build from that. Same errors. I used my previous release build (so, probably from a few days ago ToT) to build the current one.

CMakeCache.txt (95.7 KB)

CMakeCache.txt (101 KB)

It would really help to have a clean repro steps.
I don’t know how to extract them from CMakeCache :frowning:

Rebooted my machine and I’m guessing that’s how I lost the reproduction :confused: Ah well.

Thanks for reading my emails - sorry it was a dead end/noise.

Hmm, nope - still have it, just didn’t reproduce in my isolated build… I’ll need to run more experiments to figure out what the relevant variables are.