diff options
| author | John Hawthorn <john@hawthorn.email> | 2025-07-18 14:51:20 -0700 |
|---|---|---|
| committer | John Hawthorn <john@hawthorn.email> | 2025-07-22 09:37:13 -0700 |
| commit | 41ec0f5b978cba26deb7c099f580cf02ecbde42e (patch) | |
| tree | b7760f92cc4c9054bedf2f11c780429054677f2b /misc | |
| parent | 973e6770d51ce8f1ff31fca8b28335811ce16ee2 (diff) | |
Update misc/tsan_suppressions.txt
* Add gc_enable/disable to TSAN suppressions
* Remove deleted methods from tsan suppressions
* Remove TSAN errors we've fixed
* Add another two inline cache suppressions
* Improve comments
Diffstat (limited to 'misc')
| -rw-r--r-- | misc/tsan_suppressions.txt | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/misc/tsan_suppressions.txt b/misc/tsan_suppressions.txt index e46f133a9e..a34e040913 100644 --- a/misc/tsan_suppressions.txt +++ b/misc/tsan_suppressions.txt @@ -37,22 +37,16 @@ race_top:rb_ec_vm_lock_rec race_top:vm_lock_enter race_top:vm_locked -# Ractors -race:ractor_take -race:ractor_register_take -race:ractor_check_take_basket -race:ractor_selector__wait - # vm->ractor.sched.grq_cnt++ race_top:ractor_sched_enq race_top:ractor_sched_deq -# Using VM lock instead of rb_native_mutex_unlock? +# Race between vm_remove_ractor writing ractor count and +# native_thread_check_and_create_shared reading it during thread creation. +# The write happens when a ractor thread exits, the read happens when +# checking if new shared threads need to be created. race:vm_remove_ractor -# cr->sync.wait.wakeup_status -race_top:rb_ractor_sched_sleep - # th->sched.finished at end of co_start race_top:rb_thread_sched_mark_zombies @@ -62,9 +56,6 @@ race_top:thread_sched_wait_events # At thread start race_top:rb_ractor_set_current_ec_ -# Possible deadlock between Ractor lock and UBF lock -deadlock:ractor_sleep_interrupt - # TSan reports a lock-order-inversion between thread_sched_lock_ and this lock. # It's unclear if that can cause a deadlock since the lock is on self deadlock:ractor_lock_self @@ -76,16 +67,22 @@ deadlock:rb_ractor_sched_barrier_start # RVALUE_AGE_SET manipulates flag bits on objects which may be accessed in Ractors race_top:RVALUE_AGE_SET -# Inline caches +# Inline caches and call cache updates +# Multiple threads can race when updating shared call caches during method lookups +# and argument forwarding. These races involve reading/writing cd->cc fields. race_top:vm_cc_call_set race_top:vm_cc_class_check race_top:vm_search_cc race_top:vm_search_method_slowpath0 race_top:rb_vm_opt_getconstant_path race_top:vm_ic_attr_index_set +race:vm_ic_update +race:vm_caller_setup_fwd_args -# Shapes have problems with RCLASS_MAX_IV_COUNT and RCLASS_VARIATION_COUNT -# which are probably benign +# Race in shape_get_next where multiple threads simultaneously access and modify +# RCLASS_MAX_IV_COUNT and RCLASS_VARIATION_COUNT fields in class objects. +# One thread reads the field while another thread calls RCLASS_SET_MAX_IV_COUNT. +# This happens during instance variable shape transitions in multi-threaded code. race:shape_get_next # Non-atomic reads/writes @@ -99,16 +96,10 @@ race:rb_ec_cleanup # timer thread race:after_fork_ruby -# object_id races -race:object_id - # Sets objspace->flags.dont_incremental while writebarrier may be running race_top:objspace_each_exec race_top:objspace_each_objects_ensure -# Ractor autoload -race:rb_ractor_autoload_load - # Non-atomic lazy initialized static variable race_top:rbimpl_intern_const @@ -123,3 +114,7 @@ race:rb_tracepoint_enable # We walk the machine stack looking for markable objects, a thread with the GVL # released could by mutating the stack with non-Ruby-objects race:rb_gc_mark_machine_context + +# GC enable/disable flag modifications race with object allocation flag reads +race_top:rb_gc_impl_gc_disable +race_top:rb_gc_impl_gc_enable |
