Обсуждение: BUG #5769: Problem with SPI_getvalue
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
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
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. >
"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