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/2001-February/013115.html below:

[Python-Dev] compile leaks memory. lots of memory.

[Python-Dev] compile leaks memory. lots of memory.Martin von Loewis loewis@informatik.hu-berlin.de
Thu, 22 Feb 2001 18:57:49 +0100 (MET)
> It would be helpful to get some analysis on this known problem
> before the beta release.

It looks like there is a leak of symtable entries. In particular,
symtable_enter_scope has

	if (st->st_cur) {
		prev = st->st_cur;
		if (PyList_Append(st->st_stack, (PyObject *)st->st_cur) < 0) {
			Py_DECREF(st->st_cur);
			st->st_errors++;
			return;
		}
	}
	st->st_cur = (PySymtableEntryObject *)\
		PySymtableEntry_New(st, name, type, lineno);
	if (strcmp(name, TOP) == 0)
		st->st_global = st->st_cur->ste_symbols;
	if (prev)
		if (PyList_Append(prev->ste_children, 
				  (PyObject *)st->st_cur) < 0)
			st->st_errors++;

First, it seems that

         Py_XDECREF(prev);

is missing. That alone does not fix the leak, though, since prev is
always null in the test case.

The real problem comes from st_cur never being released, AFAICT. There
is a DECREF in symtable_exit_scope, but that function is not called in
the test case - symtable_enter_scope is called. For symmetry reasons,
it appears that there should be a call to symtable_exit_scope of the
global scope somewhere (which apparently is build in symtable_build).
I can't figure how what the correct place for that call would be,
though.

Regards,
Martin




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