python / python/cpython

Potential Windows-specific lost event race in the implementation of time.sleep

Offen
#135,407 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

extension-modules OS-windows type-bug
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
35.9k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Bug description:

In the Windows-specific implementation of time.sleep there appears this code:

https://github.com/python/cpython/blob/b706ff003c536c5bca24dfdd3a8917bffcfa3df1/Modules/timemodule.c#L2341-L2345

If a control-C event happens after PyErr_CheckSignals returns, but before ResetEvent is called, I believe that event may be lost.

This is probably a hard race window to hit, and I don't have a Windows development environment, so I have not confirmed that it is possible.

CPython versions tested on:

CPython main branch

Operating systems tested on:

Windows

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der Windows-spezifischen time.sleep-Implementierung in Modules/timemodule.c an den verlinkten Zeilen und untersuche anschließend die Reihenfolge von PyErr_CheckSignals und ResetEvent. Untersuche, ob in diesem Zeitfenster unter Windows ein control-C-Ereignis auftreten kann; als abgeschlossen gilt die Aufgabe, wenn die Race Condition mit dem verlorenen Ereignis bestätigt oder widerlegt wurde und das Verhalten, falls zutreffend, dokumentiert oder korrigiert und durch Tests abgedeckt wurde.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
operating-systems
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.