gh-117657: Replace TSAN suppresions with more specific rules (#118722)

Using `race:` filters out warnings if the function appears anywhere in
the stack trace. This can hide a lot of unrelated warnings, especially
for a function like `_PyEval_EvalFrameDefault`, which is somewhere on
the stack more often than not.

Change all free-threaded suppressions to `race_top:`, which only matches
the top frame, and add any new suppressions this exposes.
This commit is contained in:
Brett Simmers 2024-05-09 14:02:39 -07:00 committed by GitHub
parent 1b1db2fd9a
commit 98ff3f65c0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 81 additions and 24 deletions

View File

@ -11,31 +11,88 @@ race:set_allocator_unlocked
## Free-threaded suppressions
race:_add_to_weak_set
race:_in_weak_set
race:_mi_heap_delayed_free_partial
race:_PyEval_EvalFrameDefault
race:_PyImport_AcquireLock
race:_PyImport_ReleaseLock
race:_PyInterpreterState_SetNotRunningMain
race:_PyInterpreterState_IsRunningMain
# https://gist.github.com/mpage/0a24eb2dd458441ededb498e9b0e5de8
# These entries are for warnings that trigger in a library function, as called
# by a CPython function.
# https://gist.github.com/swtaarrs/9d41251e603fa6dedd604191a6da820d
race:park_detached_threads
# https://gist.github.com/swtaarrs/8e0e365e1d9cecece3269a2fb2f2b8b8
race:sock_recv_impl
# https://gist.github.com/swtaarrs/08dfe7883b4c975c31ecb39388987a67
race:free_threadstate
# https://gist.github.com/swtaarrs/cd6aec2006e0c1b561b68d65e9f1a872
race:_PyParkingLot_Park
race:_PyType_HasFeature
race:assign_version_tag
race:gc_restore_tid
race:initialize_new_array
race:insertdict
race:lookup_tp_dict
race:mi_heap_visit_pages
race:PyMember_GetOne
race:PyMember_SetOne
race:new_reference
race:set_contains_key
race:set_inheritable
race:start_the_world
race:tstate_set_detached
race:unicode_hash
# These warnings trigger directly in a CPython function.
race_top:_add_to_weak_set
race_top:_in_weak_set
race_top:_mi_heap_delayed_free_partial
race_top:_PyEval_EvalFrameDefault
race_top:_PyImport_AcquireLock
race_top:_PyImport_ReleaseLock
race_top:_PyInterpreterState_SetNotRunningMain
race_top:_PyInterpreterState_IsRunningMain
# https://gist.github.com/mpage/0a24eb2dd458441ededb498e9b0e5de8
race_top:_PyParkingLot_Park
race_top:_PyType_HasFeature
race_top:assign_version_tag
race_top:gc_restore_tid
race_top:initialize_new_array
race_top:insertdict
race_top:lookup_tp_dict
race_top:mi_heap_visit_pages
race_top:PyMember_GetOne
race_top:PyMember_SetOne
race_top:new_reference
race_top:set_contains_key
race_top:set_inheritable
race_top:start_the_world
race_top:tstate_set_detached
race_top:unicode_hash
race_top:Py_SET_TYPE
race_top:_PyDict_CheckConsistency
race_top:_PyImport_AcquireLock
race_top:_Py_dict_lookup_threadsafe
race_top:_imp_release_lock
race_top:_multiprocessing_SemLock_acquire_impl
race_top:builtin_compile_impl
race_top:count_next
race_top:dictiter_new
race_top:dictresize
race_top:insert_to_emptydict
race_top:insertdict
race_top:list_get_item_ref
race_top:make_pending_calls
race_top:set_add_entry
race_top:should_intern_string
race_top:worklist_pop
race_top:_PyEval_IsGILEnabled
race_top:llist_insert_tail
race_top:_Py_slot_tp_getattr_hook
race_top:add_threadstate
race_top:dump_traceback
race_top:fatal_error
race_top:mi_page_decode_padding
race_top:_multiprocessing_SemLock_release_impl
race_top:_PyFrame_GetCode
race_top:_PyFrame_Initialize
race_top:PyInterpreterState_ThreadHead
race_top:_PyObject_TryGetInstanceAttribute
race_top:_Py_qsbr_unregister
race_top:_Py_qsbr_poll
race_top:PyThreadState_Next
race_top:Py_TYPE
race_top:PyUnstable_InterpreterFrame_GetLine
race_top:sock_close
race_top:tstate_delete_common
race_top:tstate_is_freed
race_top:type_modified_unlocked
race_top:update_refs
race_top:write_thread_id
race_top:PyThreadState_Clear
# https://gist.github.com/mpage/6962e8870606cfc960e159b407a0cb40
thread:pthread_create