bpo-37788: Fix reference leak when Thread is never joined by pitrou · Pull Request #26103 · python/cpython

Conversation

@pitrou

When a Thread is not joined after it has stopped, its lock may remain in the _shutdown_locks
set until interpreter shutdown.  If many threads are created this way, the _shutdown_locks
set could therefore grow endlessly.  To avoid such a situation, purge expired locks each
time a new one is added or removed.

shihai1991

pablogsal

miss-islington added a commit to miss-islington/cpython that referenced this issue

May 14, 2021
…6103)

When a Thread is not joined after it has stopped, its lock may remain in the _shutdown_locks set until interpreter shutdown.  If many threads are created this way, the _shutdown_locks set could therefore grow endlessly.  To avoid such a situation, purge expired locks each time a new one is added or removed.
(cherry picked from commit c10c2ec)

Co-authored-by: Antoine Pitrou <antoine@python.org>

pitrou added a commit to pitrou/cpython that referenced this issue

May 15, 2021
…onGH-26103)

When a Thread is not joined after it has stopped, its lock may remain in the _shutdown_locks set until interpreter shutdown.  If many threads are created this way, the _shutdown_locks set could therefore grow endlessly.  To avoid such a situation, purge expired locks each time a new one is added or removed..
(cherry picked from commit c10c2ec)

Co-authored-by: Antoine Pitrou <antoine@python.org>

miss-islington added a commit that referenced this issue

May 15, 2021
…26103) (GH-26138)

When a Thread is not joined after it has stopped, its lock may remain in the _shutdown_locks set until interpreter shutdown.  If many threads are created this way, the _shutdown_locks set could therefore grow endlessly.  To avoid such a situation, purge expired locks each time a new one is added or removed.
(cherry picked from commit c10c2ec)


Co-authored-by: Antoine Pitrou <antoine@python.org>

@pitrou pitrou deleted the bpo-37788-thread-join-leak branch

May 15, 2021

miss-islington pushed a commit that referenced this issue

May 15, 2021
…6103) (GH-26142)

When a Thread is not joined after it has stopped, its lock may remain in the _shutdown_locks set until interpreter shutdown.  If many threads are created this way, the _shutdown_locks set could therefore grow endlessly.  To avoid such a situation, purge expired locks each time a new one is added or removed..
(cherry picked from commit c10c2ec)

Co-authored-by: Antoine Pitrou <antoine@python.org>

Automerge-Triggered-By: GH:pitrou