From 12bf602f3fe963a9d155778b9385186c3a0b5ed3 Mon Sep 17 00:00:00 2001 From: Andrew Dunstan Date: Thu, 3 Mar 2011 19:41:54 -0500 Subject: Add a comment explaining the recent fix for plpython breakage in commit 4c966d9. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mostly text supplied by Jan UrbaƄski. --- src/pl/plpython/plpython.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src') diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c index a2ebd22428c..75f7b5cf57f 100644 --- a/src/pl/plpython/plpython.c +++ b/src/pl/plpython/plpython.c @@ -3936,6 +3936,16 @@ PLy_add_exceptions(PyObject *plpy) #endif if (PyModule_AddObject(plpy, "spiexceptions", excmod) < 0) PLy_elog(ERROR, "failed to add the spiexceptions module"); + +/* + * XXX it appears that in some circumstances the reference count of the + * spiexceptions module drops to zero causing a Python assert failure when + * the garbage collector visits the module. This has been observed on the + * buildfarm. To fix this, add an additional ref for the module here. + * + * This shouldn't cause a memory leak - we don't want this garbage collected, + * and this function shouldn't be called more than once per backend. + */ Py_INCREF(excmod); PLy_exc_error = PyErr_NewException("plpy.Error", NULL, NULL); -- cgit v1.2.3