-
-
Notifications
You must be signed in to change notification settings - Fork 30.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
test_venv failure when executed by test_multiprocessing and the platform lacks a functional sem_open() #80523
Comments
test_multiprocessing fails on platforms lacking a functioning sem_open (Android for example) with: ====================================================================== 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. |
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. |
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. |
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. |
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:
The text was updated successfully, but these errors were encountered: