Skip to content

Commit

Permalink
[TSan] FreeBSD / intercept thr_exit
Browse files Browse the repository at this point in the history
intercepting thr_exit to terminate threads under FreeBSD.
Unblock few unit tests hanging.

Reviewers: krytarowski, vitalybuka, emaste

Reviewed By: dvyukov		

Differential Revision: https://reviews.llvm.org/D47677

M    lib/tsan/rtl/tsan_interceptors.cc

llvm-svn: 333870
  • Loading branch information
devnexen committed Jun 4, 2018
1 parent 367a53b commit a6303a9
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions compiler-rt/lib/tsan/rtl/tsan_interceptors.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2538,6 +2538,17 @@ TSAN_INTERCEPTOR(void, _lwp_exit) {
#define TSAN_MAYBE_INTERCEPT__LWP_EXIT
#endif

#if SANITIZER_FREEBSD
TSAN_INTERCEPTOR(void, thr_exit, tid_t *state) {
SCOPED_TSAN_INTERCEPTOR(thr_exit, state);
DestroyThreadState();
REAL(thr_exit(state));
}
#define TSAN_MAYBE_INTERCEPT_THR_EXIT TSAN_INTERCEPT(thr_exit)
#else
#define TSAN_MAYBE_INTERCEPT_THR_EXIT
#endif

TSAN_INTERCEPTOR_NETBSD_ALIAS(int, cond_init, void *c, void *a);
TSAN_INTERCEPTOR_NETBSD_ALIAS(int, cond_signal, void *c);
TSAN_INTERCEPTOR_NETBSD_ALIAS(int, cond_broadcast, void *c);
Expand Down Expand Up @@ -2730,6 +2741,7 @@ void InitializeInterceptors() {
#endif

TSAN_MAYBE_INTERCEPT__LWP_EXIT;
TSAN_MAYBE_INTERCEPT_THR_EXIT;

#if !SANITIZER_MAC && !SANITIZER_ANDROID
// Need to setup it, because interceptors check that the function is resolved.
Expand Down

0 comments on commit a6303a9

Please sign in to comment.