fix_asan.patch 957 B

123456789101112131415161718192021222324252627282930313233
  1. diff --git a/kmp_alloc.cpp b/kmp_alloc.cpp
  2. index 21518c9..c966fa6 100644
  3. --- a/kmp_alloc.cpp
  4. +++ b/kmp_alloc.cpp
  5. @@ -17,6 +17,18 @@
  6. #include "kmp_io.h"
  7. #include "kmp_wrapper_malloc.h"
  8. +#ifdef __clang__
  9. +#if __has_feature(address_sanitizer)
  10. +extern "C" { // sanitizers API
  11. +void __lsan_ignore_object(const void* p);
  12. +}
  13. +#else
  14. +#define __lsan_ignore_object(p)
  15. +#endif
  16. +#else
  17. +#define __lsan_ignore_object(p)
  18. +#endif
  19. +
  20. // Disable bget when it is not used
  21. #if KMP_USE_BGET
  22. @@ -1862,6 +1862,9 @@ static void *___kmp_allocate_align(size_t size,
  23. #else
  24. descr.ptr_allocated = malloc_src_loc(descr.size_allocated KMP_SRC_LOC_PARM);
  25. #endif
  26. +
  27. + __lsan_ignore_object(descr.ptr_allocated); // espetrov@yandex-team.ru: asan considers descr.ptr_allocated leaked because of address alignment arithmetics
  28. +
  29. KE_TRACE(10, (" malloc( %d ) returned %p\n", (int)descr.size_allocated,
  30. descr.ptr_allocated));
  31. if (descr.ptr_allocated == NULL) {