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

* 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:
Miss Islington (bot) 2021-08-06 10:09:06 -07:00 committed by GitHub
parent 36a2497093
commit a5d9963276
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 1 deletions

View file

@ -459,6 +459,24 @@ def requires_lzma(reason='requires lzma'):
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

@ -36,7 +36,8 @@
requires_IEEE_754, requires_docstrings, requires_IEEE_754, requires_docstrings,
requires_legacy_unicode_capi) requires_legacy_unicode_capi)
from test.support import (TestFailed, from test.support import (TestFailed,
run_with_locale, cpython_only) run_with_locale, cpython_only,
darwin_malloc_err_warning)
from test.support.import_helper import import_fresh_module from test.support.import_helper import import_fresh_module
from test.support import warnings_helper from test.support import warnings_helper
import random import random
@ -44,6 +45,10 @@
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.