Repository navigation
test_venv failure when executed by test_multiprocessing and the platform lacks a functional sem_open() #80523
Description
Activity
test_multiprocessing fails on platforms lacking a functioning sem_open (Android for example) with:
======================================================================
ERROR: test_multiprocessing (test.test_venv.BasicTest)
----------------------------------------------------------------------Traceback (most recent call last): File "/data/local/tmp/python/lib/python3.8/test/test_venv.py", line 317, in test_multiprocessing out, err = check_output([envpy, '-c', File "/data/local/tmp/python/lib/python3.8/test/test_venv.py", line 37, in check_output raise subprocess.CalledProcessError( subprocess.CalledProcessError: Command '['/data/local/tmp/python/tmp/tmpli0_hkdl/bin/python', '-c', 'from multiprocessing import Pool; print(Pool(1).apply_async("Python".lower).get(3))']' returned non-zero exit status 1.
- added3.8 (EOL)end of lifeend of lifetestsTests in the Lib/test dirTests in the Lib/test dirtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
on Mar 18, 2019 Are you sure that multiprocessing is the issue? On bpo-35978, the test fails because of venv, not because of multiprocessing. Can it be the same issue?
You are right, this is a duplicate of bpo-35978.
Closing as duplicate.- changed the title
[-]test_multiprocessing fails on platforms lacking a functioning sem_open[/-][+]test_venv fails on Android with clang[/+]on Mar 18, 2019 Too hasty again, remembering now why I linked this failure with sem_open :-(
Re-opening this issue as the test does fail because Android lacks a functioning sem_open implementation. And tagging this issue as a dependency of bpo-35978 as we should wait for the solution on bpo-35978 before fixing this one, if it is still needed.
The link between the failure and sem_open shows up when running the python statements of test_multiprocessing() in the interpreter on Android:
generic_x86_64:/data/local/tmp/python $ python Python 3.8.0a2+ (heads/bpo-36341-dirty:41f0b78cbf, Mar 18 2019, 10:43:05) [Clang 3.8.275480 ] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from multiprocessing import Pool >>> print(Pool(1).apply_async("Python".lower).get(3)) Traceback (most recent call last): File "/data/local/tmp/python/lib/python3.8/multiprocessing/synchronize.py", line 28, in <module> from _multiprocessing import SemLock, sem_unlink ImportError: cannot import name 'SemLock' from '_multiprocessing' (/data/local/tmp/python/lib/python3.8/lib-dynload/_multiprocessing.cpython-38dm.so) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/data/local/tmp/python/lib/python3.8/multiprocessing/context.py", line 118, in Pool return Pool(processes, initializer, initargs, maxtasksperchild, File "/data/local/tmp/python/lib/python3.8/multiprocessing/pool.py", line 166, in __init__ self._setup_queues() File "/data/local/tmp/python/lib/python3.8/multiprocessing/pool.py", line 300, in _setup_queues self._inqueue = self._ctx.SimpleQueue() File "/data/local/tmp/python/lib/python3.8/multiprocessing/context.py", line 112, in SimpleQueue return SimpleQueue(ctx=self.get_context()) File "/data/local/tmp/python/lib/python3.8/multiprocessing/queues.py", line 336, in __init__ self._rlock = ctx.Lock() File "/data/local/tmp/python/lib/python3.8/multiprocessing/context.py", line 66, in Lock from .synchronize import Lock File "/data/local/tmp/python/lib/python3.8/multiprocessing/synchronize.py", line 30, in <module> raise ImportError("This platform lacks a functioning sem_open" + ImportError: This platform lacks a functioning sem_open implementation, therefore, the required synchronization primitives needed will not function, see issue 3770. >>>
So this is a test_multiprocessing issue? If it is then the title is misleading.
- changed the title
[-]test_venv fails on Android with clang[/-][+]test_venv failure when the platform lacks a functional sem_open()[/+]on Mar 20, 2019 I guess my confusion comes from the fact that test_venv in isolation is a totally fine test suite, it just fails when test_multiprocessing runs it due to something multiprocessing-related.
I've tried tweaking the title to reflect the fact that it's a test_venv failure triggered by test_multiprocessing.
- changed the title
[-]test_venv failure when the platform lacks a functional sem_open()[/-][+]test_venv failure when executed by test_multiprocessing and the platform lacks a functional sem_open()[/+]on Mar 20, 2019 It seems like this issue has been fixed in the master branch. Reopen the issue if you consider that the fix should be backported.
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields: