[proxy] web.archive.org← back | site home | direct (HTTPS) ↗ | proxy home | ◑ dark◐ light

bpo-36820: Break unnecessary cycle in socket.py, codeop.py and dyld.py by mariocj89 · Pull Request #13135 · python/cpython

the-knights-who-say-ni

matrixise changed the title bpo-36820: Break unnecesary cycle in socket.py, codeop.py and dyld.py bpo-36820: Break unnecessary cycle in socket.py, codeop.py and dyld.py

May 6, 2019

Merged

pablogsal added a commit that referenced this pull request

Nov 19, 2019
…nces of creating cycles (GH-17246)

Capturing exceptions into names can lead to reference cycles though the __traceback__ attribute of the exceptions in some obscure cases that have been reported previously and fixed individually. As these variables are not used anyway, we can remove the binding to reduce the chances of creating reference cycles.

See for example GH-13135

jacobneiltaylor added a commit to jacobneiltaylor/cpython that referenced this pull request

Dec 5, 2019
…nces of creating cycles (pythonGH-17246)

Capturing exceptions into names can lead to reference cycles though the __traceback__ attribute of the exceptions in some obscure cases that have been reported previously and fixed individually. As these variables are not used anyway, we can remove the binding to reduce the chances of creating reference cycles.

See for example pythonGH-13135

The cycle happens when an exception is raised in
`socket.create_connection` as it saves the exception in a variable and
then re-raise it. By removing the name when the exception is raised we
remove this cycle. We cannot just remove the name before as in the happy
path since we need the exception to be raised.

As the exceptions were being saved in a different name it was
generating a cycle since it was own through the `__traceback__`.
By unsetting them we can collect the object earlier without the need of
waiting for the gc.

As the exceptions were being saved in a different name it was
generating a cycle since it was own through the `__traceback__`.
By unsetting them we can collect the object earlier without the need of
waiting for the gc.

miss-islington merged commit b64334c into python:master

Dec 6, 2019

4 checks passed

Azure Pipelines PR #20191206.9 succeeded

Details

bedevere/issue-number Issue number 36820 found

Details

bedevere/news News entry found in Misc/NEWS.d

continuous-integration/travis-ci/pr The Travis CI build passed

Details

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

Dec 6, 2019

pythonGH-13135)

Break cycle generated when saving an exception in socket.py, codeop.py and dyld.py as they keep alive not only the exception but user objects through the ``__traceback__`` attribute.

https://bugs.python.org/issue36820

Automerge-Triggered-By: @pablogsal
(cherry picked from commit b64334c)

Co-authored-by: Mario Corchero <mcorcherojim@bloomberg.net>

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

Dec 6, 2019
pythonGH-13135)

Break cycle generated when saving an exception in socket.py, codeop.py and dyld.py as they keep alive not only the exception but user objects through the ``__traceback__`` attribute.

https://bugs.python.org/issue36820

Automerge-Triggered-By: @pablogsal
(cherry picked from commit b64334c)

Co-authored-by: Mario Corchero <mcorcherojim@bloomberg.net>

Merged

miss-islington added a commit that referenced this pull request

Dec 6, 2019
GH-13135)

Break cycle generated when saving an exception in socket.py, codeop.py and dyld.py as they keep alive not only the exception but user objects through the ``__traceback__`` attribute.

https://bugs.python.org/issue36820

Automerge-Triggered-By: @pablogsal
(cherry picked from commit b64334c)

Co-authored-by: Mario Corchero <mcorcherojim@bloomberg.net>

miss-islington added a commit that referenced this pull request

Dec 6, 2019
GH-13135)

Break cycle generated when saving an exception in socket.py, codeop.py and dyld.py as they keep alive not only the exception but user objects through the ``__traceback__`` attribute.

https://bugs.python.org/issue36820

Automerge-Triggered-By: @pablogsal
(cherry picked from commit b64334c)

Co-authored-by: Mario Corchero <mcorcherojim@bloomberg.net>