From: Craig James <craig_james@emolecules.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
To: pgsql-performance@postgresql.org
Subject: Re: libgcc double-free, backend won't die
Date: Tue, 11 Dec 2007 07:05:56 -0800
Message-ID: <475EA754.1090307@emolecules.com> (raw)
In-Reply-To: <20071211112128.GB4708@alvh.no-ip.org>
References: <C34DDC3D.43F60%llonergan@greenplum.com>
<7EB0D6C0-48E2-4155-8559-9113D3BD2785@ketema.net>
<4728CF7B.7040306@gmail.com>
<4728FB3E.3070709@shaw.ca>
<472978BE.9@hagander.net>
<4729B1E9.2080306@gmail.com>
<475E4133.5080009@emolecules.com>
<20071211112128.GB4708@alvh.no-ip.org>
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-performance@postgresql.org
Cc: craig_james@emolecules.com, alvherre@alvh.no-ip.org
Subject: Re: libgcc double-free, backend won't die
In-Reply-To: <475EA754.1090307@emolecules.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox