From 39cbaa3fa99bb65533e511e247dc605955419289 Mon Sep 17 00:00:00 2001 From: Sam Gross Date: Fri, 14 Feb 2025 21:50:46 +0000 Subject: [PATCH] gh-117657: Skip some tests when running with TSAN 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 | 3 ++- Lib/test/test__interpreters.py | 1 + Lib/test/test_capi/test_misc.py | 1 + Lib/test/test_faulthandler.py | 4 ++++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Lib/test/test__interpchannels.py b/Lib/test/test__interpchannels.py index 4a7f04b9df9843..e4c1ad854514ed 100644 --- a/Lib/test/test__interpchannels.py +++ b/Lib/test/test__interpchannels.py @@ -6,7 +6,7 @@ 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 @@ def test_shareable(self): #self.assertIsNot(got, obj) +@skip_if_sanitizer('gh-129824: race on _waiting_release', thread=True) class ChannelTests(TestBase): def test_create_cid(self): diff --git a/Lib/test/test__interpreters.py b/Lib/test/test__interpreters.py index fd444f1f06ce48..7fba16bafbac37 100644 --- a/Lib/test/test__interpreters.py +++ b/Lib/test/test__interpreters.py @@ -365,6 +365,7 @@ def test_unique_id(self): 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 diff --git a/Lib/test/test_capi/test_misc.py b/Lib/test/test_capi/test_misc.py index 2e1e8e77d620d1..98dc3b42ef0bec 100644 --- a/Lib/test/test_capi/test_misc.py +++ b/Lib/test/test_capi/test_misc.py @@ -1411,6 +1411,7 @@ def run_tasks(): 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. diff --git a/Lib/test/test_faulthandler.py b/Lib/test/test_faulthandler.py index bcebaef0a5101a..998d8e3ce25285 100644 --- a/Lib/test/test_faulthandler.py +++ b/Lib/test/test_faulthandler.py @@ -227,6 +227,7 @@ def test_fatal_error_c_thread(self): 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 @@ def test_sigabrt(self): @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 @@ def test_sigfpe(self): @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 @@ def test_sigbus(self): @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(""" pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy