python / python/cpython

_PyOS_SigintEvent() is needed for interruptible waiting on main thread

Ouverte
#128,684 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

topic-C-API type-bug
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:

Moved from https://github.com/python/cpython/pull/108605#issuecomment-2521215855

In https://github.com/python/cpython/pull/108605, _PyOS_SigintEvent was removed from the public headers.

TensorStore relies on that function here: https://github.com/google/tensorstore/blob/eda046b10158e7d82fdb0f23aeecdfdeb8ac5aa3/python/tensorstore/future.cc#L105 to enable synchronously blocking on the readiness of a custom Future type while allowing Ctrl+C to interrupt when running on the main thread.

The current workaround is to manually declare the function since the symbol is still available.

I'm not aware of a usable alternative. Since signal.set_wakeup_fd only allows a single fd to be set globally, it isn't usable from a library. The best alternative would probably be to poll by waking up every few hundred milliseconds.

CPython versions tested on:

3.13

Operating systems tested on:

No response

Guide de contribution

Ouvrir le guide de contribution

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.

Piste de recherche

Commencez par examiner CPython PR #108605 et l’utilisation de _PyOS_SigintEvent dans python/tensorstore/future.cc de TensorStore, à la ligne 105. Suivez l’impact de la suppression de la déclaration de l’en-tête public sur les bibliothèques d’extension et comparez les alternatives disponibles pour le réveil par signal. Le travail sera considéré comme terminé lorsqu’une méthode prise en charge permettra à une bibliothèque d’interrompre une attente synchrone sur le thread principal, tout en préservant le comportement de Ctrl+C.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
api, operating-systems
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

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