]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-117657: Skip some tests when running with TSAN (gh-131555)
authorSam Gross <colesbury@gmail.com>
Fri, 21 Mar 2025 19:16:08 +0000 (15:16 -0400)
committerGitHub <noreply@github.com>
Fri, 21 Mar 2025 19:16:08 +0000 (15:16 -0400)
The subinterpreter tests have data races (see gh-129824).

TSAN attempts to intercept some of the fatal signals, which can lead to
bogus reports. We could possibly handle these via TSAN_OPTIONS, but it's
simpler to just skip those tests -- they're not multithreaded anyways.

Lib/test/test__interpchannels.py
Lib/test/test__interpreters.py
Lib/test/test_capi/test_misc.py
Lib/test/test_faulthandler.py

index 4a7f04b9df9843edbaac084164a5c24d8eec2ae9..e4c1ad854514ed7b5f1fc6ddeb2f6b53c54db65c 100644 (file)
@@ -6,7 +6,7 @@ import threading
 import time
 import unittest
 
-from test.support import import_helper
+from test.support import import_helper, skip_if_sanitizer
 
 _channels = import_helper.import_module('_interpchannels')
 from test.support.interpreters import _crossinterp
@@ -365,6 +365,7 @@ class ChannelIDTests(TestBase):
         #self.assertIsNot(got, obj)
 
 
+@skip_if_sanitizer('gh-129824: race on _waiting_release', thread=True)
 class ChannelTests(TestBase):
 
     def test_create_cid(self):
index fd444f1f06ce48077c0a9ceeaefcf29128a3aa38..7fba16bafbac37901a85327c42bcc58c7fcc1874 100644 (file)
@@ -365,6 +365,7 @@ class CreateTests(TestBase):
 
         self.assertEqual(len(seen), 100)
 
+    @support.skip_if_sanitizer('gh-129824: race on tp_flags', thread=True)
     def test_in_thread(self):
         lock = threading.Lock()
         id = None
index 2e1e8e77d620d131f35b6f62278639dae22722a3..98dc3b42ef0becf6089e8175bcda63ae2ce26e36 100644 (file)
@@ -1411,6 +1411,7 @@ class TestPendingCalls(unittest.TestCase):
                 self.assertNotIn(task.requester_tid, runner_tids)
 
     @requires_subinterpreters
+    @support.skip_if_sanitizer("gh-129824: race on assign_version_tag", thread=True)
     def test_isolated_subinterpreter(self):
         # We exercise the most important permutations.
 
index bcebaef0a5101aabe97c90c9d3673448bcdca963..998d8e3ce252857d46356354141bf92a7cc40f7c 100644 (file)
@@ -227,6 +227,7 @@ class FaultHandlerTests(unittest.TestCase):
             func='faulthandler_fatal_error_thread',
             py_fatal_error=True)
 
+    @support.skip_if_sanitizer("TSAN itercepts SIGABRT", thread=True)
     def test_sigabrt(self):
         self.check_fatal_error("""
             import faulthandler
@@ -238,6 +239,7 @@ class FaultHandlerTests(unittest.TestCase):
 
     @unittest.skipIf(sys.platform == 'win32',
                      "SIGFPE cannot be caught on Windows")
+    @support.skip_if_sanitizer("TSAN itercepts SIGFPE", thread=True)
     def test_sigfpe(self):
         self.check_fatal_error("""
             import faulthandler
@@ -249,6 +251,7 @@ class FaultHandlerTests(unittest.TestCase):
 
     @unittest.skipIf(_testcapi is None, 'need _testcapi')
     @unittest.skipUnless(hasattr(signal, 'SIGBUS'), 'need signal.SIGBUS')
+    @support.skip_if_sanitizer("TSAN itercepts SIGBUS", thread=True)
     @skip_segfault_on_android
     def test_sigbus(self):
         self.check_fatal_error("""
@@ -263,6 +266,7 @@ class FaultHandlerTests(unittest.TestCase):
 
     @unittest.skipIf(_testcapi is None, 'need _testcapi')
     @unittest.skipUnless(hasattr(signal, 'SIGILL'), 'need signal.SIGILL')
+    @support.skip_if_sanitizer("TSAN itercepts SIGILL", thread=True)
     @skip_segfault_on_android
     def test_sigill(self):
         self.check_fatal_error("""