holding GIL on non-sticky tasks leads to undefined behavior
Les mainteneurs répondent en général sous 2 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Active
- Domaine
- operating-systems
Piste de recherche
Commencez par GIL.@lock et les helpers de verrouillage associés, puis examinez comment les tasks de Julia peuvent migrer entre les threads du système d’exploitation et comment la task stickiness est contrôlée. Reproduisez les cas de segfault ou de deadlock signalés dans les versions concernées de Julia, et ajoutez des tests montrant que le travail protégé par GIL ne s’exécute pas sur une task migrable.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Affects: PythonCall
Describe the bug
Because the Python GIL is specific to an OS thread, but Julia tasks can migrate across threads when they're paused/resumed, locking the GIL from Julia on a non-sticky thread leads to undefined behavior (segfaults, deadlocks, etc.).
I think probably the way to handle this is to mark the current task as sticky in GIL.@lock and friends. It's really hard to get this right in libraries that wrap provide python functionality because even if callers know they need to lock the GIL, they may not know about task stickiness.
Your system
We've seen this across a wide variety of environments, Julia 1.10 to 1.12, macOS and ubuntu.
- Langage dominant
- Julia
- Étoiles
- 1.1k
- Forks
- 88
- Merge moyen
- 3 j 2 h
- PR mergées (30 j)
- 6
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
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.
Autres issues de JuliaPy/PythonCall.jl
-
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
JuliaPy/PythonCall.jl#828 · 7 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
Locking julia dependenciesOuverteenhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
JuliaPy/PythonCall.jl#805 · 4 commentaires ·
Les mainteneurs répondent en général sous 2 jours
-
enhancement
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
JuliaPy/PythonCall.jl#796 ·
Les mainteneurs répondent en général sous 2 jours
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
JuliaPy/PythonCall.jl#790 ·
Les mainteneurs répondent en général sous 2 jours
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
JuliaPy/PythonCall.jl#765 · 6 commentaires ·
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de JuliaPy/PythonCall.jl
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Sienna-Platform/PowerSystemCaseBuilder.jl#239 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
QuantumSavory/QuantumSavory.jl#592 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
JuliaQUBO/QUBOTools.jl#136 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
Sienna-Platform/PowerOperationsModels.jl#346 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
Sienna-Platform/PowerOpenAPIModels#39 ·
Les mainteneurs répondent en général sous 1 jour