Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

[3.7] bpo-36402: Fix threading._shutdown() race condition (GH-13948) (GH-14050)#14054

Merged
vstinner merged 1 commit into
python:3.7python/cpython:3.7from
miss-islington:backport-e40a97a-3.7miss-islington/cpython:backport-e40a97a-3.7Copy head branch name to clipboard
Jun 13, 2019
Merged

[3.7] bpo-36402: Fix threading._shutdown() race condition (GH-13948) (GH-14050)#14054
vstinner merged 1 commit into
python:3.7python/cpython:3.7from
miss-islington:backport-e40a97a-3.7miss-islington/cpython:backport-e40a97a-3.7Copy head branch name to clipboard

Conversation

@miss-islington

@miss-islington miss-islington commented Jun 13, 2019

Copy link
Copy Markdown
Contributor

Fix a race condition at Python shutdown when waiting for threads.
Wait until the Python thread state of all non-daemon threads get
deleted (join all non-daemon threads), rather than just wait until
Python threads complete.

  • Add threading._shutdown_locks: set of Thread._tstate_lock locks
    of non-daemon threads used by _shutdown() to wait until all Python
    thread states get deleted. See Thread._set_tstate_lock().
  • Add also threading._shutdown_locks_lock to protect access to
    threading._shutdown_locks.
  • Add test_finalization_shutdown() test.

(cherry picked from commit 468e5fe)

Remove the _tstate_lock from _shutdown_locks, don't remove None.

(cherry picked from commit 6f75c87)
(cherry picked from commit e40a97a)

Co-authored-by: Victor Stinner vstinner@redhat.com

https://bugs.python.org/issue36402

…3948) (pythonGH-14050)

* bpo-36402: Fix threading._shutdown() race condition (pythonGH-13948)

Fix a race condition at Python shutdown when waiting for threads.
Wait until the Python thread state of all non-daemon threads get
deleted (join all non-daemon threads), rather than just wait until
Python threads complete.

* Add threading._shutdown_locks: set of Thread._tstate_lock locks
  of non-daemon threads used by _shutdown() to wait until all Python
  thread states get deleted. See Thread._set_tstate_lock().
* Add also threading._shutdown_locks_lock to protect access to
  threading._shutdown_locks.
* Add test_finalization_shutdown() test.

(cherry picked from commit 468e5fe)

* bpo-36402: Fix threading.Thread._stop() (pythonGH-14047)

Remove the _tstate_lock from _shutdown_locks, don't remove None.

(cherry picked from commit 6f75c87)
(cherry picked from commit e40a97a)

Co-authored-by: Victor Stinner <vstinner@redhat.com>
@vstinner vstinner changed the title [3.7] [3.8] bpo-36402: Fix threading._shutdown() race condition (GH-13948) (GH-14050) [3.7] bpo-36402: Fix threading._shutdown() race condition (GH-13948) (GH-14050) Jun 13, 2019
@miss-islington

Copy link
Copy Markdown
Contributor Author

@vstinner: Status check is done, and it's a success ✅ .

@vstinner vstinner merged commit 6eb2878 into python:3.7 Jun 13, 2019
@miss-islington miss-islington deleted the backport-e40a97a-3.7 branch June 13, 2019 12:22
Sign up for free to 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.

4 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.