Re: plpython crash on exception - Mailing list pgsql-patches

From Alvaro Herrera
Subject Re: plpython crash on exception
Date
Msg-id 20071122182921.GK4903@alvh.no-ip.org
Whole thread Raw
In response to Re: plpython crash on exception  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: plpython crash on exception  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-patches
Tom Lane escribió:
> "Marko Kreen" <markokr@gmail.com> writes:
> > Following function crashes plpython on x86-64 / gcc 4.1.2 / debian 4.0:
> >   CREATE FUNCTION crashme(str_len integer)
> >   RETURNS text AS $$
> >     raise Exception("X" * str_len)
> >   $$ LANGUAGE plpythonu;
>
> >   SELECT crashme(1000);
>
> > Problem turns out to be va_list handling in PLy_vprintf() which
> > uses same va_list repeatedly.  Fix is to va_copy to temp variable.
>
> This patch isn't acceptable because va_copy() isn't portable.
>
> I'm kinda wondering why PLy_printf and the functions after it even
> exist.  They look like rather poorly done reimplementations of
> functionality that exists elsewhere in the backend (eg, stringinfo.c).
> In particular, why malloc and not palloc?

See attached patch.

I didn't bother to change the PLy_malloc and friends because I think
that would be too much change for 8.3.  PLy_realloc is gone though
because there are no callers left after this patch.

--
Alvaro Herrera                         http://www.flickr.com/photos/alvherre/
"Ninguna manada de bestias tiene una voz tan horrible como la humana" (Orual)

Attachment

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: plpython crash on exception
Next
From: Tom Lane
Date:
Subject: Re: plpython crash on exception