[sanitizer] Disable ASLR for release_shadow_space
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 29 Oct 2020 14:49:28 +0000 (14:49 +0000)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 29 Oct 2020 19:09:03 +0000 (16:09 -0300)
On aarch64 with kernel 4.12.13 the test sporadically fails with

RSS at start: 1564, after mmap: 103964, after mmap+set label: 308768, \
after fixed map: 206368, after another mmap+set label: 308768, after \
munmap: 206368
release_shadow_space.c.tmp: [...]/release_shadow_space.c:80: int \
main(int, char **): Assertion `after_fixed_mmap <= before + delta' failed.

It seems on some executions the memory is not fully released, even
after munmap.  And it also seems that ASLR is hurting it by adding
some fragmentation, by disabling it I could not reproduce the issue
in multiple runs.

compiler-rt/test/dfsan/release_shadow_space.c

index 40326a9..8b05034 100644 (file)
@@ -1,5 +1,5 @@
-// DFSAN_OPTIONS=no_huge_pages_for_shadow=false RUN: %clang_dfsan %s -o %t && %run %t
-// DFSAN_OPTIONS=no_huge_pages_for_shadow=true RUN: %clang_dfsan %s -o %t && %run %t
+// DFSAN_OPTIONS=no_huge_pages_for_shadow=false RUN: %clang_dfsan %s -o %t && setarch `uname -m` -R %run %t
+// DFSAN_OPTIONS=no_huge_pages_for_shadow=true RUN: %clang_dfsan %s -o %t && setarch `uname -m` -R %run %t
 
 #include <assert.h>
 #include <sanitizer/dfsan_interface.h>