Re: [PATCHES] PATCH: Memory leaks on start-up - Mailing list pgsql-hackers

From Lee Kindness
Subject Re: [PATCHES] PATCH: Memory leaks on start-up
Date
Msg-id 16157.18863.113381.459464@kelvin.csl.co.uk
Whole thread Raw
In response to Re: [PATCHES] PATCH: Memory leaks on start-up  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: [PATCHES] PATCH: Memory leaks on start-up  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: [PATCHES] PATCH: Memory leaks on start-up  (Bruce Momjian <pgman@candle.pha.pa.us>)
Re: [PATCHES] PATCH: Memory leaks on start-up  (Bruce Momjian <pgman@candle.pha.pa.us>)
Re: [PATCHES] PATCH: Memory leaks on start-up  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-hackers
Tom, happier with the attached patch?

I'd have to disagree with regards to the memory leaks not being worth
a mention - any such leak can cause problems when the PostgreSQL
installation is either unattended, long-living andor has very high
connection levels. Half a kilobyte on start-up isn't negligible in
this light.

Regards, Lee.

Tom Lane writes:
 > Lee Kindness <lkindness@csl.co.uk> writes:
 > > Guys, attached is a patch to fix two memory leaks on start-up.
 >
 > I do not like the changes to miscinit.c.  In the first place, it is not
 > a "memory leak" to do a one-time allocation of state for a proc_exit
 > function.  A bigger complaint is that your proposed change introduces
 > fragile coupling between CreateLockFile and its callers, in order to
 > save no resources worth mentioning.  More, it introduces an assumption
 > that the globals directoryLockFile and socketLockFile don't change while
 > the postmaster is running.  UnlinkLockFile should unlink the file that
 > it was originally told to unlink, regardless of what happens to those
 > globals.
 >
 > If you are intent on spending code to free stuff just before the
 > postmaster exits, a better fix would be for UnlinkLockFile to free its
 > string argument after using it.

Index: src/backend/libpq/pqcomm.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/backend/libpq/pqcomm.c,v
retrieving revision 1.157
diff -u -r1.157 pqcomm.c
--- src/backend/libpq/pqcomm.c    12 Jun 2003 07:36:51 -0000    1.157
+++ src/backend/libpq/pqcomm.c    22 Jul 2003 14:16:46 -0000
@@ -363,7 +363,7 @@
         added++;
     }

-    freeaddrinfo(addrs);
+    freeaddrinfo2(family, addrs);

     if (!added)
     {
Index: src/backend/utils/init/miscinit.c
===================================================================
RCS file: /projects/cvsroot/pgsql-server/src/backend/utils/init/miscinit.c,v
retrieving revision 1.104
diff -u -r1.104 miscinit.c
--- src/backend/utils/init/miscinit.c    27 Jun 2003 19:08:37 -0000    1.104
+++ src/backend/utils/init/miscinit.c    22 Jul 2003 14:16:46 -0000
@@ -673,8 +673,15 @@
 static void
 UnlinkLockFile(int status, Datum filename)
 {
-    unlink((char *) DatumGetPointer(filename));
-    /* Should we complain if the unlink fails? */
+  char *fname = (char *)DatumGetPointer(filename);
+  if( fname != NULL )
+    {
+      if( unlink(fname) != 0 )
+    {
+      /* Should we complain if the unlink fails? */
+    }
+      free(fname);
+    }
 }

 /*

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: [PATCHES] PATCH: Memory leaks on start-up
Next
From: Tom Lane
Date:
Subject: Re: CVS: compilation failed