Closed
Description
Bug report
The order of operations in STORE_ATTR_WITH_HINT
differs from the dictionary implementation in a way that is not safe:
Lines 2235 to 2242 in 35d8ac7
It's not safe to call _PyObject_GC_MAY_BE_TRACKED(value)
after the Py_XDECREF
call. The dictionary may hold the only strong reference to value
in ep->me_value
, and that can be modified during the Py_XDECREF
call.
Note that dictobject.c
does the tracking before modifying the dictionary -- not after it -- and so avoids this problem.