[Python-Dev] No longer enable Py_TRACE_REFS by default in debug build (original) (raw)

Victor Stinner vstinner at redhat.com
Wed Apr 10 18:29:34 EDT 2019


Le mer. 10 avr. 2019 à 20:09, Steve Dower <steve.dower at python.org> a écrit :

> The main question is if anyone ever used PyTRACEREFS? Does someone > use sys.getobjects() or PYTHONDUMPREFS environment variable? > > Using PYTHONDUMPREFS=1 on a debug build (with PyTRACEREFS) does > simply crash Python 3.7 at exit. So I don't think that anyone use it > :-)

How do we track reference leaks in the buildbots? Can/should we be using this?

Ah, maybe there is a misunderstanding. You don't need Py_TRACE_REFS to track memory leaks: "python3 -m test -R 3:3" works without that. test_regrtest contains an unit test for reference leaks (I know it that I wrote the test :-)), and you can see that the test pass on my PR. I also checked manually by adding a memory leak into a test: it is still detected :-)

regrtest uses sys.gettotalrefcount(), sys.getallocatedblocks() and support.fd_count() to track reference, memory and file descriptor leaks. None of these functions are related to Py_TRACE_REFS.

Again, the question is who rely on Py_TRACE_REFS. If nobody rely on it, I don't see the point of keeping this expensive feature (at least, not by default).

It doesn't crash on Python 3.8, so I suspect fixing the bug is a better option than using it as an excuse to remove the feature.

It's not what I said. I only said that it seems that nobody uses PYTHONDUMPREFS, since it's broken for a long time. It's just a hint about the usage of Py_TRACE_REFS.

I don't propose to remove the feature, but to disable it by default.

Victor

Night gathers, and now my watch begins. It shall not end until my death.



More information about the Python-Dev mailing list