[3.9] bpo-40928: notify users running test_decimal on macOS of malloc warnings (GH-26783) (GH-27629)

* When trying to allocate very large regions on macOS, malloc does not   fail silently. It sends a noisy error out to STDERR
* This provides a helper function to warn the user, and provides the warning for test_decimal, which consistently generates these warnings on macOS.

Co-authored-by: Łukasz Langa <lukasz@langa.pl>.
(cherry picked from commit 15d3c14df3)

Co-authored-by: Jack DeVries <58614260+jdevries3133@users.noreply.github.com>
This commit is contained in:
Łukasz Langa 2021-08-06 15:35:11 +02:00 committed by GitHub
parent 7dad033751
commit 693a661478
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 1 deletions

View file

@ -986,6 +986,25 @@ TEST_HOME_DIR = os.path.dirname(TEST_SUPPORT_DIR)
# TEST_DATA_DIR is used as a target download location for remote resources # TEST_DATA_DIR is used as a target download location for remote resources
TEST_DATA_DIR = os.path.join(TEST_HOME_DIR, "data") TEST_DATA_DIR = os.path.join(TEST_HOME_DIR, "data")
def darwin_malloc_err_warning(test_name):
"""Assure user that loud errors generated by macOS libc's malloc are
expected."""
if sys.platform != 'darwin':
return
import shutil
msg = ' NOTICE '
detail = (f'{test_name} may generate "malloc can\'t allocate region"\n'
'warnings on macOS systems. This behavior is known. Do not\n'
'report a bug unless tests are also failing. See bpo-40928.')
padding, _ = shutil.get_terminal_size()
print(msg.center(padding, '-'))
print(detail)
print('-' * padding)
def findfile(filename, subdir=None): def findfile(filename, subdir=None):
"""Try to find a file on sys.path or in the test directory. If it is not """Try to find a file on sys.path or in the test directory. If it is not
found the argument passed to the function is returned (this does not found the argument passed to the function is returned (this does not

View file

@ -35,12 +35,17 @@ import locale
from test.support import (run_unittest, run_doctest, is_resource_enabled, from test.support import (run_unittest, run_doctest, is_resource_enabled,
requires_IEEE_754, requires_docstrings) requires_IEEE_754, requires_docstrings)
from test.support import (import_fresh_module, TestFailed, from test.support import (import_fresh_module, TestFailed,
run_with_locale, cpython_only) run_with_locale, cpython_only,
darwin_malloc_err_warning)
import random import random
import inspect import inspect
import threading import threading
if sys.platform == 'darwin':
darwin_malloc_err_warning('test_decimal')
C = import_fresh_module('decimal', fresh=['_decimal']) C = import_fresh_module('decimal', fresh=['_decimal'])
P = import_fresh_module('decimal', blocked=['_decimal']) P = import_fresh_module('decimal', blocked=['_decimal'])
orig_sys_decimal = sys.modules['decimal'] orig_sys_decimal = sys.modules['decimal']

View file

@ -0,0 +1,2 @@
Notify users running test_decimal regression tests on macOS of potential
harmless "malloc can't allocate region" messages spewed by test_decimal.