Received: from localhost (postgresql.org [64.49.215.8]) by postgresql.org (Postfix) with ESMTP id BC51947710A for ; Wed, 8 Jan 2003 01:43:05 -0500 (EST) Received: from news.hub.org (news.hub.org [64.49.215.80]) by postgresql.org (Postfix) with ESMTP id ACA38476F3C for ; Wed, 8 Jan 2003 01:43:00 -0500 (EST) Received: by news.hub.org (Postfix, from userid 8) id 7B7F943B023; Wed, 8 Jan 2003 01:43:00 -0500 (EST) From: Gerhard Hintermayer X-Newsgroups: comp.databases.postgresql.interfaces Subject: Re: still memory leaks with libpgtcl Date: Wed, 08 Jan 2003 07:39:05 +0100 Organization: Hub.Org Networking Services (http://www.hub.org) Lines: 43 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@news.hub.org User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) Gecko/20021130 X-Accept-Language: en-us, en In-Reply-To: To: pgsql-interfaces@postgresql.org X-Virus-Scanned: by AMaViS new-20020517 X-Archive-Number: 200301/34 X-Sequence-Number: 3534 ljb wrote: > I've confirmed that the crash occurs with Tcl 8.3.4 also. But I've got a > patch which seems to fix it - that is, it neither leaks on disconnect nor > crashes on shutdown after my patch is applied. At least it doesn't with my > extremely minimal testing. If you want to try this, go ahead. This patch is > seriously ugly and 'highly suspect', and I am NOT suggesting this be > included in the PostgreSQL release. Really. But it works. Maybe. > > (This is for PostgreSQL-7.3.1) > > --- src/interfaces/libpgtcl/pgtclId.c.bak 2002-10-17 10:53:32.000000000 -0400 > +++ src/interfaces/libpgtcl/pgtclId.c 2003-01-07 21:51:53.000000000 -0500 > @@ -300,12 +300,10 @@ > * small) amount of memory taken for the channel state representation. > * Note we are not leaking a socket, since libpq closed that already. > */ > -#ifdef NOT_USED > #if TCL_MAJOR_VERSION >= 8 > - if (connid->notifier_channel != NULL) > + if (connid->notifier_channel != NULL && interp != NULL) > Tcl_UnregisterChannel(NULL, connid->notifier_channel); > #endif > -#endif > > /* > * We must use Tcl_EventuallyFree because we don't want the connid Ah, I think my brain does have memory leaks too, but I remember now, that Tom Lane fixed that after I found out, that the logfile was filled with "unexpected EOF on client connection" each time I pg_disconnected. Does your patch produce the above log-entries ? I'd be willing to post a question on comp.lang.tcl or dig through the Tcl_Channel documentation, but I still see the problem of two concurrent developments (gborg/libpgtcl). Gborg does heavily use Tcl_Obj instead of strings, and as far as I can remember, the code differs a lot, so it's likely that if ther's a solution in libpgtcl, it has to be dropped and searched again, when gborg will replace libpgtcl. -- Gerhard Hintermayer http://www.inode.at/g.hintermayer