Multiple bugs in `multiprocessing.managers`: pickling, nesting, etc
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Bug report
Bug description:
I noticed multiple bugs in multiprocessing.mangers and explained them, with fixes, in a blog post: https://zpz.github.io/blog/python-mp-manager-2/
A summary of the bugs are as follows:
- Pickling of
BaseProxyobjects: easily causes object release before unpickling happens in another process - Unable to call proxy-returning methods on a proxy that has been passed to another process. (There is an open PR https://github.com/python/cpython/pull/99598 but my solution appears simpler and cleaner.)
- "Nested proxies" are never released (also reported in this isseu https://github.com/python/cpython/issues/103136)
- A simple enhancement (not exactly a bug): server-side exceptions lose all traceback info when propagated to user (also reported here in this issue https://github.com/python/cpython/issues/78279)
In addition, this issue
- The specification of
exposedis a mess. (See https://zpz.github.io/blog/python-mp-manager-2/#exposed-methods)
My package mpservice.multiprocessing.server_process fixes these issues with some additional enhancements and simplifications. The enhancements are covered in another blog post: https://zpz.github.io/blog/python-mp-manager-3/
I hope to engage in some discussions (esp with a core developer) before working on some PR, either local fixes or something a little more holistic.
CPython versions tested on:
3.10, 3.13
Operating systems tested on:
Linux
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par les points d’entrée de multiprocessing.managers et l’article de blog lié, puis comparez les comportements signalés aux PRs et issues référencés. Reproduisez les cas de pickling, de proxys imbriqués, de tracebacks d’exception et de méthodes exposées ; le travail n’est terminé qu’une fois le périmètre convenu et chaque bug sélectionné couvert par un test de non-régression.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- distributed-systems
- Type d'issue
- Bug
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 20/100