Skip to content

Conversation

@miss-islington
Copy link
Contributor

@miss-islingtonmiss-islington commented Sep 11, 2023

Fix a race condition in concurrent.futures. When a process in the
process pool was terminated abruptly (while the future was running or
pending), close the connection write end. If the call queue is
blocked on sending bytes to a worker process, closing the connection
write end interrupts the send, so the queue can be closed.

Changes:

  • _ExecutorManagerThread.terminate_broken() now closes
    call_queue._writer.
  • multiprocessing PipeConnection.close() now interrupts
    WaitForMultipleObjects() in _send_bytes() by cancelling the
    overlapped operation.
    (cherry picked from commit a9b1f84)

Co-authored-by: Victor Stinner vstinner@python.org

…109244) Fix a race condition in concurrent.futures. When a process in the process pool was terminated abruptly (while the future was running or pending), close the connection write end. If the call queue is blocked on sending bytes to a worker process, closing the connection write end interrupts the send, so the queue can be closed. Changes: * _ExecutorManagerThread.terminate_broken() now closes call_queue._writer. * multiprocessing PipeConnection.close() now interrupts WaitForMultipleObjects() in _send_bytes() by cancelling the overlapped operation. (cherry picked from commit a9b1f84) Co-authored-by: Victor Stinner <vstinner@python.org>
Copy link
Member

@vstinnervstinner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, good bot.

@gpshead
Copy link
Member

I don't know that this strictly needs to hold up 3.12.0, it'd be fine in 3.12.1... but the issue this addresses seems to be one that causes CI testing to fail frequently on windows. so it might help unblock things anyways.

@Yhg1s
Copy link
Member

FYI, I'm delaying this until 3.12.1.

@Yhg1sYhg1s merged commit 1d8c18c into python:3.12Oct 2, 2023
@miss-islingtonmiss-islington deleted the backport-a9b1f84-3.12 branch October 2, 2023 14:56
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@miss-islington@gpshead@Yhg1s@vstinner@bedevere-bot