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)