From c80604f7a30a5eee5421a4d9786ef135b03c25a8 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Tue, 26 Oct 2021 16:31:46 +0200 Subject: [PATCH] tsan: remove real func check from interceptors If the real function is not intercepted, we are going to crash one way or another. The question is just in the failure mode: error message vs NULL deref. But the message costs us a check in every interceptor and they are not observed to be failing in real life for a long time, also other sanitizers don't have this check as well (also crash on NULL deref if that happens). Remove the check from non-debug mode. Reviewed By: melver Differential Revision: https://reviews.llvm.org/D112540 --- compiler-rt/lib/tsan/rtl/tsan_interceptors.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/compiler-rt/lib/tsan/rtl/tsan_interceptors.h b/compiler-rt/lib/tsan/rtl/tsan_interceptors.h index 89b2f99..a772854 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_interceptors.h +++ b/compiler-rt/lib/tsan/rtl/tsan_interceptors.h @@ -47,10 +47,7 @@ inline bool in_symbolizer() { #define SCOPED_TSAN_INTERCEPTOR(func, ...) \ SCOPED_INTERCEPTOR_RAW(func, __VA_ARGS__); \ - if (REAL(func) == 0) { \ - Report("FATAL: ThreadSanitizer: failed to intercept %s\n", #func); \ - Die(); \ - } \ + DCHECK(REAL(func)); \ if (!thr->is_inited || thr->ignore_interceptors || thr->in_ignored_lib) \ return REAL(func)(__VA_ARGS__); -- 2.7.4