Skip site navigation (1) Skip section navigation (2)

Segfault in PL/Python

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 (view raw or flat)
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: plpython-crash-fix.patch
Description: text/x-patch (1.3 KB)

Responses

pgsql-hackers by date

Next:From: John MurtariDate: 2009-10-31 12:30:39
Subject: Re: Patch set under development to add usage reporting.
Previous:From: Greg StarkDate: 2009-10-31 12:11:10
Subject: Re: Unicode UTF-8 table formatting for psql text output

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group