[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

llvm-svn: 336046
This commit is contained in:
Fangrui Song 2018-06-30 08:27:48 +00:00
parent 50a10ba6e0
commit da891dc6b4
1 changed files with 3 additions and 1 deletions

View File

@ -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