Skip to content

Commit 98ff3f6

Browse files
authored
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.
1 parent 1b1db2f commit 98ff3f6

File tree

1 file changed

+81
-24
lines changed

1 file changed

+81
-24
lines changed

Diff for: Tools/tsan/suppressions_free_threading.txt

+81-24
Original file line numberDiff line numberDiff line change
@@ -11,31 +11,88 @@ race:set_allocator_unlocked
1111

1212
## Free-threaded suppressions
1313

14-
race:_add_to_weak_set
15-
race:_in_weak_set
16-
race:_mi_heap_delayed_free_partial
17-
race:_PyEval_EvalFrameDefault
18-
race:_PyImport_AcquireLock
19-
race:_PyImport_ReleaseLock
20-
race:_PyInterpreterState_SetNotRunningMain
21-
race:_PyInterpreterState_IsRunningMain
22-
# https://gist.github.com/mpage/0a24eb2dd458441ededb498e9b0e5de8
14+
15+
# These entries are for warnings that trigger in a library function, as called
16+
# by a CPython function.
17+
18+
# https://gist.github.com/swtaarrs/9d41251e603fa6dedd604191a6da820d
19+
race:park_detached_threads
20+
# https://gist.github.com/swtaarrs/8e0e365e1d9cecece3269a2fb2f2b8b8
21+
race:sock_recv_impl
22+
# https://gist.github.com/swtaarrs/08dfe7883b4c975c31ecb39388987a67
23+
race:free_threadstate
24+
# https://gist.github.com/swtaarrs/cd6aec2006e0c1b561b68d65e9f1a872
2325
race:_PyParkingLot_Park
24-
race:_PyType_HasFeature
25-
race:assign_version_tag
26-
race:gc_restore_tid
27-
race:initialize_new_array
28-
race:insertdict
29-
race:lookup_tp_dict
30-
race:mi_heap_visit_pages
31-
race:PyMember_GetOne
32-
race:PyMember_SetOne
33-
race:new_reference
34-
race:set_contains_key
35-
race:set_inheritable
36-
race:start_the_world
37-
race:tstate_set_detached
38-
race:unicode_hash
26+
27+
28+
# These warnings trigger directly in a CPython function.
29+
30+
race_top:_add_to_weak_set
31+
race_top:_in_weak_set
32+
race_top:_mi_heap_delayed_free_partial
33+
race_top:_PyEval_EvalFrameDefault
34+
race_top:_PyImport_AcquireLock
35+
race_top:_PyImport_ReleaseLock
36+
race_top:_PyInterpreterState_SetNotRunningMain
37+
race_top:_PyInterpreterState_IsRunningMain
38+
# https://gist.github.com/mpage/0a24eb2dd458441ededb498e9b0e5de8
39+
race_top:_PyParkingLot_Park
40+
race_top:_PyType_HasFeature
41+
race_top:assign_version_tag
42+
race_top:gc_restore_tid
43+
race_top:initialize_new_array
44+
race_top:insertdict
45+
race_top:lookup_tp_dict
46+
race_top:mi_heap_visit_pages
47+
race_top:PyMember_GetOne
48+
race_top:PyMember_SetOne
49+
race_top:new_reference
50+
race_top:set_contains_key
51+
race_top:set_inheritable
52+
race_top:start_the_world
53+
race_top:tstate_set_detached
54+
race_top:unicode_hash
55+
race_top:Py_SET_TYPE
56+
race_top:_PyDict_CheckConsistency
57+
race_top:_PyImport_AcquireLock
58+
race_top:_Py_dict_lookup_threadsafe
59+
race_top:_imp_release_lock
60+
race_top:_multiprocessing_SemLock_acquire_impl
61+
race_top:builtin_compile_impl
62+
race_top:count_next
63+
race_top:dictiter_new
64+
race_top:dictresize
65+
race_top:insert_to_emptydict
66+
race_top:insertdict
67+
race_top:list_get_item_ref
68+
race_top:make_pending_calls
69+
race_top:set_add_entry
70+
race_top:should_intern_string
71+
race_top:worklist_pop
72+
race_top:_PyEval_IsGILEnabled
73+
race_top:llist_insert_tail
74+
race_top:_Py_slot_tp_getattr_hook
75+
race_top:add_threadstate
76+
race_top:dump_traceback
77+
race_top:fatal_error
78+
race_top:mi_page_decode_padding
79+
race_top:_multiprocessing_SemLock_release_impl
80+
race_top:_PyFrame_GetCode
81+
race_top:_PyFrame_Initialize
82+
race_top:PyInterpreterState_ThreadHead
83+
race_top:_PyObject_TryGetInstanceAttribute
84+
race_top:_Py_qsbr_unregister
85+
race_top:_Py_qsbr_poll
86+
race_top:PyThreadState_Next
87+
race_top:Py_TYPE
88+
race_top:PyUnstable_InterpreterFrame_GetLine
89+
race_top:sock_close
90+
race_top:tstate_delete_common
91+
race_top:tstate_is_freed
92+
race_top:type_modified_unlocked
93+
race_top:update_refs
94+
race_top:write_thread_id
95+
race_top:PyThreadState_Clear
3996

4097
# https://gist.github.com/mpage/6962e8870606cfc960e159b407a0cb40
4198
thread:pthread_create

0 commit comments

Comments
 (0)