-
-
Notifications
You must be signed in to change notification settings - Fork 33k
Closed
Labels
3.14bugs and security fixesbugs and security fixes3.15new features, bugs and security fixesnew features, bugs and security fixestype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Bug report
Bug description:
Fatal Python error: _PySemaphore_PlatformWait: unexpected error from semaphore: 4294967295 (error: 6)
Python runtime state: finalizing (tstate=0x6aa6c460)
Thread 0x00001360 (most recent call first):
<no Python frame>
Windows fatal exception: code 0x80000003
Current thread 0x00001360 (most recent call first):
<no Python frame>
Current thread's C stack trace (most recent call first):
<cannot get C stack on this system>
4294967295
is the -1
return code from WaitForMultipleObjects
. Error code 6 is ERROR_INVALID_HANDLE
.
I'm pretty sure that the _PyOS_SigintEvent()
handle is getting closed concurrently with the mutex wait.
Lines 118 to 136 in 1ffe913
HANDLE sigint_event = _PyOS_SigintEvent(); | |
HANDLE handles[2] = { sema->platform_sem, sigint_event }; | |
DWORD count = sigint_event != NULL ? 2 : 1; | |
wait = WaitForMultipleObjects(count, handles, FALSE, millis); | |
if (wait == WAIT_OBJECT_0) { | |
res = Py_PARK_OK; | |
} | |
else if (wait == WAIT_OBJECT_0 + 1) { | |
ResetEvent(sigint_event); | |
res = Py_PARK_INTR; | |
} | |
else if (wait == WAIT_TIMEOUT) { | |
res = Py_PARK_TIMEOUT; | |
} | |
else { | |
_Py_FatalErrorFormat(__func__, | |
"unexpected error from semaphore: %u (error: %u)", | |
wait, GetLastError()); | |
} |
Seen in https://github.com/python/cpython/actions/runs/15423887404/job/43405853684 at the end of running test_decorators
.
CPython versions tested on:
CPython main branch
Operating systems tested on:
Windows
Linked PRs
Metadata
Metadata
Assignees
Labels
3.14bugs and security fixesbugs and security fixes3.15new features, bugs and security fixesnew features, bugs and security fixestype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error