Deferring side effecting code in _Py_Dealloc()
#98260
Labels
interpreter-core
(Objects, Python, Grammar, and Parser dirs)
performance
Performance or resource usage
Currently
_Py_Dealloc()
can call arbitrary code, and since_Py_Dealloc()
can be called by anyPy_DECREF()
is means thatPy_DECREF()
can call arbitrary code.Py_DECREF()
is everywhere, so it impairs our ability to reason about about the behavior of code.This problem is not as severe as #97922, but is still worth fixing, especially as it will impair our ability to optimize traces for 3.12.
We can either make a
Py_SAFE_DECREF()
to be used internally, or changePy_DECREF()
to defer all potentially side-effecting deallocation functions.It is not clear which is the best option. Changing
Py_DECREF()
is simple, and certainly easy to reason about, but might delay deallocation of extension module objects for too long.The text was updated successfully, but these errors were encountered: