Обсуждение: BUG #5769: Problem with SPI_getvalue

Поиск
Список
Период
Сортировка

BUG #5769: Problem with SPI_getvalue

От
"Helmar Spangenberg"
Дата:
The following bug has been logged online:

Bug reference:      5769
Logged by:          Helmar Spangenberg
Email address:      hspangenberg@frey.de
PostgreSQL version: 9.0.1
Operating system:   Linux
Description:        Problem with SPI_getvalue
Details:

Referring to the manual, I can pfree the result returned by SPI_getvalue.
However the backend crashes as soon as I use pfree.

No example uses pfree. Could it be possible, there is a bug in the
documentation?

Thanks,
Helmar

Re: BUG #5769: Problem with SPI_getvalue

От
Heikki Linnakangas
Дата:
On 25.11.2010 13:45, Helmar Spangenberg wrote:
> Bug reference:      5769
> Logged by:          Helmar Spangenberg
> Email address:      hspangenberg@frey.de
> PostgreSQL version: 9.0.1
> Operating system:   Linux
> Description:        Problem with SPI_getvalue
> Details:
>
> Referring to the manual, I can pfree the result returned by SPI_getvalue.
> However the backend crashes as soon as I use pfree.
>
> No example uses pfree. Could it be possible, there is a bug in the
> documentation?

The return value of SPI_getvalue is certainly palloc()'d, so pfree()ing
it should not crash. Perhaps you are trying to pfree() it after the
whole memory context has already been destroyed. Or perhaps SPI_getvalue
returned a NULL and you're trying to pfree() that. Can't say without
more details.

--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

Re: BUG #5769: Problem with SPI_getvalue

От
Helmar Spangenberg
Дата:
You are right.
In my case I obviously had corrupted the heap somewhere else - now it works as
expected.

Thanks for your quick answer,
Helmar

Am Donnerstag, 25. November 2010 16:11:03 schrieb Heikki Linnakangas:
> On 25.11.2010 13:45, Helmar Spangenberg wrote:
> > Bug reference:      5769
> > Logged by:          Helmar Spangenberg
> > Email address:      hspangenberg@frey.de
> > PostgreSQL version: 9.0.1
> > Operating system:   Linux
> > Description:        Problem with SPI_getvalue
> > Details:
> >
> > Referring to the manual, I can pfree the result returned by SPI_getvalue.
> > However the backend crashes as soon as I use pfree.
> >
> > No example uses pfree. Could it be possible, there is a bug in the
> > documentation?
>
> The return value of SPI_getvalue is certainly palloc()'d, so pfree()ing
> it should not crash. Perhaps you are trying to pfree() it after the
> whole memory context has already been destroyed. Or perhaps SPI_getvalue
> returned a NULL and you're trying to pfree() that. Can't say without
> more details.
>

Re: BUG #5769: Problem with SPI_getvalue

От
Tom Lane
Дата:
"Helmar Spangenberg" <hspangenberg@frey.de> writes:
> Referring to the manual, I can pfree the result returned by SPI_getvalue.

Well, the result is the output of a datatype output function.  I think
that's palloc'd by all standard datatypes, but maybe you're working with
a custom datatype that tries to return a constant string?

            regards, tom lane