Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

holding GIL on non-sticky tasks leads to undefined behavior

Ouverte
#809 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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
Stack technique
julia, python

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

bug

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

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de JuliaPy/PythonCall.jl

Toutes les issues de JuliaPy/PythonCall.jl

Issues similaires

Plus d'issues Julia

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.