@@ -50,6 +50,11 @@ def skip_unless_reliable_fork(test):
5050 return test
5151
5252
53+ skip_if_tsan_fork = unittest .skipIf (
54+ support .check_sanitizer (thread = True ),
55+ "TSAN doesn't support threads after fork" )
56+
57+
5358def requires_subinterpreters (meth ):
5459 """Decorator to skip a test if subinterpreters are not supported."""
5560 return unittest .skipIf (interpreters is None ,
@@ -634,6 +639,7 @@ def test_daemon_param(self):
634639 self .assertTrue (t .daemon )
635640
636641 @skip_unless_reliable_fork
642+ @skip_if_tsan_fork
637643 def test_dummy_thread_after_fork (self ):
638644 # Issue #14308: a dummy thread in the active list doesn't mess up
639645 # the after-fork mechanism.
@@ -703,6 +709,7 @@ def f():
703709
704710 @skip_unless_reliable_fork
705711 @unittest .skipUnless (hasattr (os , 'waitpid' ), "test needs os.waitpid()" )
712+ @skip_if_tsan_fork
706713 def test_main_thread_after_fork (self ):
707714 code = """if 1:
708715 import os, threading
@@ -1271,6 +1278,7 @@ def test_2_join_in_forked_process(self):
12711278 self ._run_and_join (script )
12721279
12731280 @skip_unless_reliable_fork
1281+ @skip_if_tsan_fork
12741282 def test_3_join_in_forked_from_thread (self ):
12751283 # Like the test above, but fork() was called from a worker thread
12761284 # In the forked process, the main Thread object must be marked as stopped.
0 commit comments