diff options
author | Fangrui Song <maskray@google.com> | 2018-06-30 08:27:48 +0000 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2018-06-30 08:27:48 +0000 |
commit | 877d4c0b05307d9bc8b72c6977ad12419df0294a (patch) | |
tree | 49e9f89d77f2257a9af942fa2138f47ce795424d /lib | |
parent | 46ce63aeead620efb48427fe645513a32cc48757 (diff) |
[asan] Use MADV_NOCORE for use_madv_dontdump on FreeBSD.
Currently in FreeBSD 12.0-CURRENT with trunk clang+compiler-rt, faulty -fsanitize=address executable hangs at 'urdlck' state.
Ka Ho Ng has verified that by backporting this to llvm 6.0.1, with use_madv_dontdump=1, shadow memory is not dumped.
ASAN_OPTIONS=abort_on_error=1:disable_coredump=0:use_madv_dontdump=1 ./a
Reviewers: dimitry, kcc, dvyukov, emaste, khng300
Subscribers: kubamracek, delcypher, llvm-commits, #sanitizers
Differential Revision: https://reviews.llvm.org/D48257
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@336046 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sanitizer_common/sanitizer_posix_libcdep.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/sanitizer_common/sanitizer_posix_libcdep.cc b/lib/sanitizer_common/sanitizer_posix_libcdep.cc index 6acda66f0..eaf157881 100644 --- a/lib/sanitizer_common/sanitizer_posix_libcdep.cc +++ b/lib/sanitizer_common/sanitizer_posix_libcdep.cc @@ -78,8 +78,10 @@ bool NoHugePagesInRegion(uptr addr, uptr size) { } bool DontDumpShadowMemory(uptr addr, uptr length) { -#ifdef MADV_DONTDUMP +#if defined(MADV_DONTDUMP) return madvise((void *)addr, length, MADV_DONTDUMP) == 0; +#elif defined(MADV_NOCORE) + return madvise((void *)addr, length, MADV_NOCORE) == 0; #else return true; #endif // MADV_DONTDUMP |