summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2022-03-01 14:44:08 (GMT)
committerGitHub <noreply@github.com>2022-03-01 14:44:08 (GMT)
commit9204bb72a2da5885facc747e63d2bd2d654606fe (patch)
treec23150281ded8586447d39075a083ecfa5ad59f4
parent0cc63641859b2f60ea65bb7c0b6d1cfcec1e2f1a (diff)
downloadcpython-9204bb72a2da5885facc747e63d2bd2d654606fe.zip
cpython-9204bb72a2da5885facc747e63d2bd2d654606fe.tar.gz
cpython-9204bb72a2da5885facc747e63d2bd2d654606fe.tar.bz2
bpo-46633: Skip tests on ASAN and/or MSAN builds (GH-31632)
Skip tests on ASAN and/or MSAN builds: * multiprocessing tests * test___all__ * test_concurrent_futures * test_decimal * test_peg_generator * test_tools The ASAN job of GitHub Actions no longer excludes these tests.
-rw-r--r--.github/workflows/build.yml10
-rw-r--r--Lib/test/_test_multiprocessing.py6
-rw-r--r--Lib/test/test___all__.py7
-rw-r--r--Lib/test/test_concurrent_futures.py6
-rw-r--r--Lib/test/test_decimal.py16
-rw-r--r--Lib/test/test_peg_generator/__init__.py12
-rw-r--r--Lib/test/test_tools/__init__.py7
7 files changed, 40 insertions, 24 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 5d36dff..f6df743 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -306,12 +306,4 @@ jobs:
- name: Display build info
run: make pythoninfo
- name: Tests
- # Skip test_tools test_peg_generator test_concurrent_futures because
- # there are too slow: between 5 and 20 minutes on this CI.
- #
- # Skip multiprocessing and concurrent.futures tests which are affected by
- # bpo-45200 bug: libasan dead lock in pthread_create().
- #
- # test___all__ is skipped because importing some modules directly can trigger
- # known problems with ASAN (like tk or crypt).
- run: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu -x test___all__ test_multiprocessing_fork test_multiprocessing_forkserver test_multiprocessing_spawn test_tools test_peg_generator test_concurrent_futures"
+ run: xvfb-run make buildbottest TESTOPTS="-j4 -uall,-cpu"
diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py
index 6b1b167..bb73d9e 100644
--- a/Lib/test/_test_multiprocessing.py
+++ b/Lib/test/_test_multiprocessing.py
@@ -73,6 +73,12 @@ except ImportError:
msvcrt = None
+if support.check_sanitizer(address=True):
+ # bpo-45200: Skip multiprocessing tests if Python is built with ASAN to
+ # work around a libasan race condition: dead lock in pthread_create().
+ raise unittest.SkipTest("libasan has a pthread_create() dead lock")
+
+
def latin(s):
return s.encode('latin')
diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py
index 81293e1..a1a3d89 100644
--- a/Lib/test/test___all__.py
+++ b/Lib/test/test___all__.py
@@ -11,6 +11,13 @@ except ModuleNotFoundError:
_multiprocessing = None
+if support.check_sanitizer(address=True, memory=True):
+ # bpo-46633: test___all__ is skipped because importing some modules
+ # directly can trigger known problems with ASAN (like tk or crypt).
+ raise unittest.SkipTest("workaround ASAN build issues on loading tests "
+ "like tk or crypt")
+
+
class NoAll(RuntimeError):
pass
diff --git a/Lib/test/test_concurrent_futures.py b/Lib/test/test_concurrent_futures.py
index 71c88a3..8adba36 100644
--- a/Lib/test/test_concurrent_futures.py
+++ b/Lib/test/test_concurrent_futures.py
@@ -32,6 +32,12 @@ import multiprocessing.process
import multiprocessing.util
+if support.check_sanitizer(address=True, memory=True):
+ # bpo-46633: Skip the test because it is too slow when Python is built
+ # with ASAN/MSAN: between 5 and 20 minutes on GitHub Actions.
+ raise unittest.SkipTest("test too slow on ASAN/MSAN build")
+
+
def create_future(state=PENDING, exception=None, result=None):
f = Future()
f._state = state
diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py
index 9ced801..b68cfbe 100644
--- a/Lib/test/test_decimal.py
+++ b/Lib/test/test_decimal.py
@@ -34,7 +34,7 @@ import numbers
import locale
from test.support import (run_unittest, run_doctest, is_resource_enabled,
requires_IEEE_754, requires_docstrings,
- requires_legacy_unicode_capi)
+ requires_legacy_unicode_capi, check_sanitizer)
from test.support import (TestFailed,
run_with_locale, cpython_only,
darwin_malloc_err_warning)
@@ -43,17 +43,6 @@ from test.support import warnings_helper
import random
import inspect
import threading
-import sysconfig
-_cflags = sysconfig.get_config_var('CFLAGS') or ''
-_config_args = sysconfig.get_config_var('CONFIG_ARGS') or ''
-MEMORY_SANITIZER = (
- '-fsanitize=memory' in _cflags or
- '--with-memory-sanitizer' in _config_args
-)
-
-ADDRESS_SANITIZER = (
- '-fsanitize=address' in _cflags
-)
if sys.platform == 'darwin':
@@ -5518,7 +5507,8 @@ class CWhitebox(unittest.TestCase):
# Issue 41540:
@unittest.skipIf(sys.platform.startswith("aix"),
"AIX: default ulimit: test is flaky because of extreme over-allocation")
- @unittest.skipIf(MEMORY_SANITIZER or ADDRESS_SANITIZER, "sanitizer defaults to crashing "
+ @unittest.skipIf(check_sanitizer(address=True, memory=True),
+ "ASAN/MSAN sanitizer defaults to crashing "
"instead of returning NULL for malloc failure.")
def test_maxcontext_exact_arith(self):
diff --git a/Lib/test/test_peg_generator/__init__.py b/Lib/test/test_peg_generator/__init__.py
index fa855f2..77f72fc 100644
--- a/Lib/test/test_peg_generator/__init__.py
+++ b/Lib/test/test_peg_generator/__init__.py
@@ -1,7 +1,15 @@
-import os
-
+import os.path
+import unittest
+from test import support
from test.support import load_package_tests
+
+if support.check_sanitizer(address=True, memory=True):
+ # bpo-46633: Skip the test because it is too slow when Python is built
+ # with ASAN/MSAN: between 5 and 20 minutes on GitHub Actions.
+ raise unittest.SkipTest("test too slow on ASAN/MSAN build")
+
+
# Load all tests in package
def load_tests(*args):
return load_package_tests(os.path.dirname(__file__), *args)
diff --git a/Lib/test/test_tools/__init__.py b/Lib/test/test_tools/__init__.py
index 61af657..34b0d3b 100644
--- a/Lib/test/test_tools/__init__.py
+++ b/Lib/test/test_tools/__init__.py
@@ -6,6 +6,13 @@ import unittest
from test import support
from test.support import import_helper
+
+if support.check_sanitizer(address=True, memory=True):
+ # bpo-46633: Skip the test because it is too slow when Python is built
+ # with ASAN/MSAN: between 5 and 20 minutes on GitHub Actions.
+ raise unittest.SkipTest("test too slow on ASAN/MSAN build")
+
+
basepath = os.path.normpath(
os.path.dirname( # <src/install dir>
os.path.dirname( # Lib