gh-97591: In Exception.__setstate__(), acquire strong reference before calling tp_hash slot.#97700
Conversation
gvanrossum
left a comment
There was a problem hiding this comment.
LG, I just think you could add your name to the NEWS item.
Misc/NEWS.d/next/Core and Builtins/2022-10-01-08-55-09.gh-issue-97591.pw6kkH.rst
Outdated
Show resolved
Hide resolved
…e-97591.pw6kkH.rst Co-authored-by: Guido van Rossum <gvanrossum@gmail.com>
|
@kumaraditya303 I notice the “back port to 3.10/11” tag, and I wonder how to do the back port? If it’s proper I’d like to do it. |
gvanrossum
left a comment
There was a problem hiding this comment.
LGTM.
Regarding the backport, this is usually taken care of automatically by the Miss-Islington bot. Only if there are git merge problems the bot can't do it, a manual backport is required. In that case you're welcome to try it.
|
Thanks @ofey404 for the PR, and @gvanrossum for merging it 🌮🎉.. I'm working now to backport this PR to: 3.10, 3.11. |
|
GH-97716 is a backport of this pull request to the 3.11 branch. |
|
GH-97717 is a backport of this pull request to the 3.10 branch. |
…es before calling `tp_hash` slot (pythonGH-97700) (cherry picked from commit d639438) Co-authored-by: Ofey Chan <ofey206@gmail.com>
…es before calling `tp_hash` slot (pythonGH-97700) (cherry picked from commit d639438) Co-authored-by: Ofey Chan <ofey206@gmail.com>
|
You're lucky, the backports happened automatically. They'll be merged as soon as the tests pass (since I pre-approved them). |
…es before calling `tp_hash` slot (python#97700)
* main: (2069 commits) pythongh-96512: Move int_max_str_digits setting to PyConfig (python#96944) pythongh-94808: Coverage: Check picklablability of calliter (python#95923) pythongh-94808: Add test coverage for PyObject_HasAttrString (python#96627) pythongh-94732: Fix KeyboardInterrupt race in asyncio run_forever() (python#97765) Fix typos in `bltinmodule.c`. (pythonGH-97766) pythongh-94808: `_PyLineTable_StartsLine` was not used (pythonGH-96609) pythongh-97681: Remove Tools/demo/ directory (python#97682) Fix typo in unittest docs (python#97742) pythongh-97728: Argument Clinic: Fix uninitialized variable in the Py_UNICODE converter (pythonGH-97729) pythongh-95913: Fix PEP number in PEP 678 What's New ref label (python#97739) pythongh-95913: Copyedit/improve New Modules What's New section (python#97721) pythongh-97740: Fix bang in Sphinx C domain ref target syntax (python#97741) pythongh-96819: multiprocessing.resource_tracker: check if length of pipe write <= 512 (python#96890) pythongh-97706: multiprocessing tests: Delete unused variable `rand` (python#97707) pythonGH-85447: Clarify docs about awaiting future multiple times (python#97738) [docs] Update logging cookbook with recipe for using a logger like an output… (pythonGH-97730) pythongh-97607: Fix content parsing in the impl-detail reST directive (python#97652) pythongh-95975: Move except/*/finally ref labels to more precise locations (python#95976) pythongh-97591: In `Exception.__setstate__()` acquire strong references before calling `tp_hash` slot (python#97700) pythongh-95588: Drop the safety claim from `ast.literal_eval` docs. (python#95919) ...
Added an
Py_INCREF / Py_DECREFpair around the call oftp_hashslot inException.__setstate__().If the last reference of dict value is cleared (by
dict.clear()), during the__setstate__method call, it would cause gc crash.A script to reproduce this is in #97591 :
Similiar issue: #92930