Received: from localhost (unknown [200.46.204.184]) by postgresql.org (Postfix) with ESMTP id 709082E01B4 for ; Tue, 11 Dec 2007 11:06:20 -0400 (AST) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.184]) (amavisd-maia, port 10024) with ESMTP id 14979-01-4 for ; Tue, 11 Dec 2007 11:06:06 -0400 (AST) Received: from mail.emolecules.com (66-226-76-106.dedicated.abac.net [66.226.76.106]) by postgresql.org (Postfix) with ESMTP id 925072E02D3 for ; Tue, 11 Dec 2007 11:05:59 -0400 (AST) Received: (qmail 32520 invoked by uid 2020); 11 Dec 2007 07:21:37 -0800 Received: from wsip-68-224-174-233.sd.sd.cox.net (HELO lisa-james-computer.local) (68.224.174.233) by 192.168.0.4 with SMTP; 11 Dec 2007 07:21:37 -0800 Message-ID: <475EA754.1090307@emolecules.com> Date: Tue, 11 Dec 2007 07:05:56 -0800 From: Craig James User-Agent: Thunderbird 2.0.0.9 (Macintosh/20071031) MIME-Version: 1.0 To: Alvaro Herrera , pgsql-performance@postgresql.org Subject: Re: libgcc double-free, backend won't die References: <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> In-Reply-To: <20071211112128.GB4708@alvh.no-ip.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200712/131 X-Sequence-Number: 27947 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