A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2002-June/026028.html below:

[Python-Dev] Garbage collector problem

[Python-Dev] Garbage collector problemTim Peters tim.one@comcast.net
Fri, 28 Jun 2002 19:25:24 -0400
[Tim]
> ...
> The mystery to me now is why the a,b,c,d,e loop didn't happen in 2.2.1.

Because 2.2.1 has a bug in PyCFunction_New(), which ends with

	op->m_self = self;
	PyObject_GC_Init(op);
	return (PyObject *)op;

But also in 2.2.1,

/* This is here for the sake of backwards compatibility.  Extensions that
 * use the old GC API will still compile but the objects will not be
 * tracked by the GC. */
#define PyGC_HEAD_SIZE 0
#define PyObject_GC_Init(op)
#define PyObject_GC_Fini(op)
#define PyObject_AS_GC(op) (op)
#define PyObject_FROM_GC(op) (op)

IOW, PyObject_GC_Init(op) is a nop in 2.2.1, and the bound method object
never gets tracked.  Therefore the a,b,c,d,e loop never gets started.

In current CVS, the function ends with

	op->m_self = self;
	_PyObject_GC_TRACK(op);
	return (PyObject *)op;

and a world of fun follows <wink>.





RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4