From: | Peter Eisentraut <peter_e(at)gmx(dot)net> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Segfault in PL/Python |
Date: | 2009-10-31 12:24:18 |
Message-ID: | 1256991858.28195.16.camel@vanquo.pezone.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
I have discovered an obscure segfault condition in PL/Python. In
PLy_output(), when the elog() call in the TRY branch throws an exception
(this can happen when a statement timeout kicks in, for example), the
PyErr_SetString() call in the CATCH branch can cause a segfault, because
the Py_XDECREF(so) call before it releases memory that is still used by
the sv variable that PyErr_SetString() uses as argument, because sv
points into memory owned by so.
Patch is attached. This should be backpatched back to 8.0, where this
code was introduced.
I also threw in a couple of volatile declarations for variables that are
used before and after the TRY. I don't think they caused the crash that
I observed, but they could become issues.
Attachment | Content-Type | Size |
---|---|---|
plpython-crash-fix.patch | text/x-patch | 1.3 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | John Murtari | 2009-10-31 12:30:39 | Re: Patch set under development to add usage reporting. |
Previous Message | Greg Stark | 2009-10-31 12:11:10 | Re: Unicode UTF-8 table formatting for psql text output |