test_threading.ThreadJoinOnShutdown.test_reinit_tls_after_fork() does crash on AIX: bpo-40068. One of the issue is that logging does crash at fork: bpo-40091. The strange thing is that test_threading doesn't use logging. I'm quite sure that logging is imported through test.support.
"import test.support" imports not less than 171... That's quite "heavy". It includes "heavy" modules like concurrent.futures, asyncio or multiprocessing.
It's maybe time to slice again test.support until submodules to reduce the number of imports to the bare minimum. For example, "import test.support" imports asyncio, whereas it's only used by very few tests. Maybe we should add "test.support.asyncioutils".
$ ./python
Python 3.9.0a5+ (heads/pycore_interp:a1ff2c5cf3, Apr 13 2020, 12:27:13)
>>> import sys
>>> import test
>>> before=set(sys.modules)
>>> import test.support
>>> after=set(sys.modules)
>>> len(after - before)
171
>>> import pprint
>>> pprint.pprint(sorted(after - before))
['__mp_main__',
'_asyncio',
'_bisect',
'_blake2',
'_bz2',
'_collections',
'_compat_pickle',
'_compression',
'_contextvars',
'_datetime',
'_elementtree',
'_functools',
'_hashlib',
'_heapq',
'_lzma',
'_opcode',
'_operator',
'_pickle',
'_posixsubprocess',
'_queue',
'_random',
'_sha3',
'_sha512',
'_socket',
'_sre',
'_ssl',
'_string',
'_struct',
'_sysconfigdata_d_linux_x86_64-linux-gnu',
'_weakrefset',
'argparse',
'array',
'asyncio',
'asyncio.base_events',
'asyncio.base_futures',
'asyncio.base_subprocess',
'asyncio.base_tasks',
'asyncio.constants',
'asyncio.coroutines',
'asyncio.events',
'asyncio.exceptions',
'asyncio.format_helpers',
'asyncio.futures',
'asyncio.locks',
'asyncio.log',
'asyncio.protocols',
'asyncio.queues',
'asyncio.runners',
'asyncio.selector_events',
'asyncio.sslproto',
'asyncio.staggered',
'asyncio.streams',
'asyncio.subprocess',
'asyncio.tasks',
'asyncio.transports',
'asyncio.trsock',
'asyncio.unix_events',
'base64',
'binascii',
'bisect',
'bz2',
'collections',
'collections.abc',
'concurrent',
'concurrent.futures',
'concurrent.futures._base',
'contextlib',
'contextvars',
'copy',
'copyreg',
'datetime',
'difflib',
'dis',
'email',
'email.base64mime',
'email.charset',
'email.encoders',
'email.errors',
'email.header',
'email.quoprimime',
'enum',
'errno',
'faulthandler',
'fnmatch',
'functools',
'gc',
'gettext',
'glob',
'grp',
'gzip',
'hashlib',
'heapq',
'importlib',
'importlib._bootstrap',
'importlib._bootstrap_external',
'importlib.abc',
'importlib.machinery',
'importlib.util',
'inspect',
'itertools',
'keyword',
'linecache',
'locale',
'logging',
'logging.handlers',
'lzma',
'math',
'multiprocessing',
'multiprocessing.context',
'multiprocessing.process',
'multiprocessing.reduction',
'nntplib',
'opcode',
'operator',
'pickle',
'platform',
'pprint',
'pwd',
'pyexpat',
'pyexpat.errors',
'pyexpat.model',
'queue',
'quopri',
'random',
're',
'reprlib',
'resource',
'select',
'selectors',
'shutil',
'signal',
'socket',
'sre_compile',
'sre_constants',
'sre_parse',
'ssl',
'string',
'struct',
'subprocess',
'sysconfig',
'tempfile',
'test.support',
'test.support.testresult',
'threading',
'token',
'tokenize',
'traceback',
'types',
'typing',
'typing.io',
'typing.re',
'unittest',
'unittest.async_case',
'unittest.case',
'unittest.loader',
'unittest.main',
'unittest.result',
'unittest.runner',
'unittest.signals',
'unittest.suite',
'unittest.util',
'urllib',
'urllib.error',
'urllib.response',
'warnings',
'weakref',
'xml',
'xml.etree',
'xml.etree.ElementPath',
'xml.etree.ElementTree',
'zlib'] |