File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1372,6 +1372,7 @@ AC_CHECK_HEADERS(process.h)
13721372AC_CHECK_HEADERS ( pwd.h )
13731373AC_CHECK_HEADERS ( sanitizer/asan_interface.h )
13741374AC_CHECK_HEADERS ( sanitizer/msan_interface.h )
1375+ AC_CHECK_HEADERS ( sanitizer/tsan_interface.h )
13751376AC_CHECK_HEADERS ( setjmpex.h )
13761377AC_CHECK_HEADERS ( stdalign.h )
13771378AC_CHECK_HEADERS ( stdio.h )
Original file line number Diff line number Diff line change 2929# endif
3030#endif
3131
32+ #ifdef HAVE_SANITIZER_TSAN_INTERFACE_H
33+ # if __has_feature (thread_sanitizer ) || defined(__SANITIZE_THREAD__ )
34+ # define RUBY_TSAN_ENABLED
35+ # include <sanitizer/tsan_interface.h>
36+ # endif
37+ #endif
38+
3239#include "ruby/internal/stdbool.h" /* for bool */
3340#include "ruby/ruby.h" /* for VALUE */
3441
4249#elif defined(RUBY_MSAN_ENABLED )
4350 # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS (x ) \
4451 __attribute__((__no_sanitize__("memory"), __noinline__)) x
52+ #elif defined(RUBY_TSAN_ENABLED )
53+ # define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS (x ) \
54+ __attribute__((__no_sanitize__("thread"), __noinline__)) x
4555#elif defined(NO_SANITIZE_ADDRESS )
4656# define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS (x ) \
4757 NO_SANITIZE_ADDRESS(NOINLINE(x))
Original file line number Diff line number Diff line change @@ -104,10 +104,6 @@ race_top:encoded_iseq_trace_instrument
104104race:rb_iseq_trace_set_all
105105race:rb_tracepoint_enable
106106
107- # We walk the machine stack looking for markable objects, a thread with the GVL
108- # released could by mutating the stack with non-Ruby-objects
109- race:rb_gc_mark_machine_context
110-
111107# GC enable/disable flag modifications race with object allocation flag reads
112108race_top:rb_gc_impl_gc_disable
113109race_top:rb_gc_impl_gc_enable
You can’t perform that action at this time.
0 commit comments