http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59188
Dmitry Vyukov <dvyukov at google dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |dvyukov at google dot com --- Comment #3 from Dmitry Vyukov <dvyukov at google dot com> --- Hi, Can you please try the following patch? If it does not work, please check what else references sigsetjmp. --- rtl/tsan_interceptors.cc (revision 194823) +++ rtl/tsan_interceptors.cc (working copy) @@ -2034,6 +2034,9 @@ Die(); } +extern "C" uptr dlsym(uptr, const char*); +const uptr RTLD_NEXT = -1; + void InitializeInterceptors() { CHECK_GT(cur_thread()->in_rtl, 0); @@ -2048,10 +2051,11 @@ SANITIZER_COMMON_INTERCEPTORS_INIT; - TSAN_INTERCEPT(setjmp); - TSAN_INTERCEPT(_setjmp); - TSAN_INTERCEPT(sigsetjmp); - TSAN_INTERCEPT(__sigsetjmp); + *(uptr*)&REAL(setjmp) = dlsym(RTLD_NEXT, "setjmp"); + *(uptr*)&REAL(_setjmp) = dlsym(RTLD_NEXT, "_setjmp"); + *(uptr*)&REAL(sigsetjmp) = dlsym(RTLD_NEXT, "sigsetjmp"); + *(uptr*)&REAL(__sigsetjmp) = dlsym(RTLD_NEXT, "__sigsetjmp"); + TSAN_INTERCEPT(longjmp); TSAN_INTERCEPT(siglongjmp);