From: Andrew Dunstan Date: Fri, 4 Mar 2011 00:41:54 +0000 (-0500) Subject: Add a comment explaining the recent fix for plpython breakage in commit 4c966d9. X-Git-Tag: REL9_1_ALPHA4~62 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=12bf602f3fe963a9d155778b9385186c3a0b5ed3;p=thirdparty%2Fpostgresql.git Add a comment explaining the recent fix for plpython breakage in commit 4c966d9. Mostly text supplied by Jan UrbaƄski. --- 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);