[Python-Dev] Idea: reduce GC threshold in development mode (-X dev) (original) (raw)

Ronald Oussoren ronaldoussoren at mac.com
Fri Jun 8 09:22:01 EDT 2018


On 8 Jun 2018, at 12:36, Serhiy Storchaka <storchaka at gmail.com> wrote:

08.06.18 11:31, Victor Stinner пише: Do you suggest to trigger a fake "GC collection" which would just visit all objects with a no-op visit callback? I like the idea!

Yeah, that would help to detect objects in an inconsistent state and reuse the existing implemented visit methods of all types. Would you be interested to try to implement this new debug feature? It is simple: #ifdef PyDEBUG void PyGCCheckConsistency(void) { int i; if (PyRuntime.gc.collecting) { return; } PyRuntime.gc.collecting = 1; for (i = 0; i < NUMGENERATIONS; ++i) { updaterefs(GENHEAD(i)); } for (i = 0; i < NUMGENERATIONS; ++i) { subtractrefs(GENHEAD(i)); } for (i = 0; i < NUMGENERATIONS; ++i) { revivegarbage(GENHEAD(i)); } PyRuntime.gc.collecting = 0; } #endif

Wouldn’t it be enough to visit just the the newly tracked object in PyObject_GC_Track with a visitor function that does something minimal to verify that the object value is sane, for example by checking PyType_Ready(Py_TYPE(op)).

That would find issues where objects are tracked before they are initialised far enough to be save to visit, without changing GC behavior. I have no idea what the performance impact of this is though.

Ronald

-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20180608/d54b3ea7/attachment-0001.html>



More information about the Python-Dev mailing list