Alvaro Herrera wrote:
Craig James wrote:
This is driving me crazy.  I have some Postgres C function extensions
in a shared library.  They've been working fine.  I upgraded to Fedora
Core 6 and gcc4, and now every time psql(1) disconnects from the
server, the serverlog gets this message:

  *** glibc detected *** postgres: mydb mydb [local] idle: double free or 
corruption! (!prev): 0x08bfcde8

Do you have any Perl or Python functions or stuff like that?

There is one Perl function, but it is never invoked during this test.  I connect to 
Postgres, issue one "select myfunc()", and disconnect.

 Postgres 8.1.4

Please upgrade to 8.1.10 and try again.  If it still fails we will be
much more interested in tracking it down.

Good idea, but alas, no difference.  I get the same "double free or 
corruption!" mesage.  I compiled 8.1.10 from source and installed, then rebuilt all 
of my code from scratch and reinstalled the shared object. Same message as before.

Here is my guess -- and this is just a guess.  My functions use a third-party 
library which, of necessity, uses malloc/free in the ordinary way.  I suspect 
that there's a bug in the Postgres palloc() code that's walking over memory 
that regular malloc() allocates.  The third-party library (OpenBabel) has been 
tested pretty thoroughly by me an others and has no memory corruption problems. 
 All malloc's are freed properly.  Does that seem like a possibility?

I can't figure out how to use ordinary tools like valgrind with a Postgres 
backend process to track this down.

Thanks,
Craig


---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

              http://www.postgresql.org/docs/faq

Reply via email to