[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [leafnode-list] Memory leak (Was: Limiting leafnode run time and/or memory usage?)



On Sun, Dec 26, 2004 at 02:58:39PM -0500, Lloyd Zusman wrote:
> On Sun, Dec 26, 2004 at 01:56:55PM -0500, Lloyd Zusman wrote:
> > One more thing: this occurs under Linux ...
> > 
> >   % uname -sr
> >   Linux 2.4.20-021stab022.8.777-enterprise
> > 
> > I don't see this problem under FreeBSD.
> 
> ... but when I did the Linux build using dmalloc, the problem seems
> to have gone away ... no more memory leak.

I was wrong when I wrote that.  The memory leak indeed persists
under Linux.  It's just that the unfreed memory increases much more
slowly when using the dmalloc library.






> I used the latest version of dmalloc, which means that I had to
> change some code in critmem_{malloc,calloc,realloc}.c (the *_leap
> routines no longer exist).
> 
> So on this Lunix system, I'll just keep using dmalloc for now.
> 
> Here are the patches to the critmem_* routines so that they
> work with the latest dmalloc library:
> 
> *** critmem_malloc.c.orig       Sun Dec 26 14:54:09 2004
> --- critmem_malloc.c    Sun Dec 26 14:43:23 2004
> ***************
> *** 18,24 ****
>       void *a;
>   
>   #ifdef WITH_DMALLOC
> !     a = _malloc_leap(f, l, size);
>   #else
>       (void)f;
>       (void)l;                  /* shut up compiler warnings */
> --- 18,24 ----
>       void *a;
>   
>   #ifdef WITH_DMALLOC
> !     a = dmalloc_malloc(f, l, size, DMALLOC_FUNC_MALLOC, 0, 0);
>   #else
>       (void)f;
>       (void)l;                  /* shut up compiler warnings */
> *** critmem_calloc.c.orig       Sun Dec 26 14:54:09 2004
> --- critmem_calloc.c    Sun Dec 26 14:41:38 2004
> ***************
> *** 19,25 ****
>       void *a;
>   
>   #ifdef WITH_DMALLOC
> !     a = _calloc_leap(f, l, 1, size);
>   #else
>       (void)f;
>       (void)l;                  /* shut up compiler warnings */
> --- 19,25 ----
>       void *a;
>   
>   #ifdef WITH_DMALLOC
> !     a = dmalloc_calloc(f, l, 1, size, DMALLOC_FUNC_CALLOC, 0);
>   #else
>       (void)f;
>       (void)l;                  /* shut up compiler warnings */
> *** critmem_realloc.c.orig      Sun Dec 26 14:54:09 2004
> --- critmem_realloc.c   Sun Dec 26 14:41:06 2004
> ***************
> *** 18,24 ****
>       void *a;
>   
>   #ifdef WITH_DMALLOC
> !     a = _realloc_leap(f, l, oa, size);
>   #else
>       (void)f;
>       (void)l;                  /* shut up compiler warnings */
> --- 18,24 ----
>       void *a;
>   
>   #ifdef WITH_DMALLOC
> !     a = dmalloc_realloc(f, l, oa, size, DMALLOC_FUNC_REALLOC, 0);
>   #else
>       (void)f;
>       (void)l;                  /* shut up compiler warnings */
> 
> 
> 
> 
> > 
> > On Sun, Dec 26, 2004 at 01:17:25PM -0500, Lloyd Zusman wrote:
> > > I have more information about this issue (see below).
> > > 
> > > There appears to be a significant memory leak in leafnode-20041215a.
> > > 
> > > I'm running this in a local-group-only configuration.  Every time I
> > > issue a "group local.newsgroup" command from within an nntp session,
> > > the leafnode process grabs around 320,000 bytes of memory that it
> > > never releases. This is consistent: each and every time I issue that
> > > command, the memory footprint of the leafnode process increases by
> > > this amount.  This has continued all the way up to 256 meg.
> > > 
> > > I can hack my way around this problem by putting the following line
> > > within the xinetd "service" block quoted at the bottom of this
> > > message.
> > > 
> > >   rlimit_as  4M
> > > 
> > > However, this is not an optimal solution, because it could cause
> > > leafnode to die in the middle of processing a command, thereby
> > > causing users to receive error messages.  The ideal solution is to
> > > fix the memory leak, of course.
> > > 
> > > I thought I'd report this here.  I'll try to find this leak, but it
> > > might take me a while because it's been years since I have dug
> > > through the leafnode code.  Someone else with more familiarity with
> > > the source to leafnode would probably be able to diagnose and fix
> > > this more quickly.
> > > 
> > > 
> > > 
> > > On Sun, Dec 26, 2004 at 07:13:32AM -0500, Lloyd Zusman wrote:
> > > > Is there a way to ensure that leafnode doesn't eat up too much memory?
> > > > 
> > > > I'm using leafnode-20041215a, and I have the following xinetd entry
> > > > for starting up leafnode (see below), but the daemon appears to
> > > > remain running, even when there is no nntp activity.  As time goes
> > > > on and nntp requests are being made, leafnode consumes more and more
> > > > memory until it holds up to 256 meg.
> > > > 
> > > > Is there a way to start up leafnode so that it doesn't remain
> > > > running all the time, or so that it doesn't keep consuming more and
> > > > more memory?
> > > > 
> > > > Thanks in advance.
> > > > 
> > > > Here's my xinetd entry for starting leafnode:
> > > > 
> > > >   # default: on
> > > >   # description: The leafnode NNTP service.
> > > > 
> > > >   service nntp
> > > >   {
> > > >         socket_type = stream
> > > >         protocol    = tcp
> > > >         wait        = no
> > > >         user        = news
> > > >         server      = /usr/local/sbin/leafnode
> > > >   }
> > > > 
> > > > 
> > > > -- 
> > > >  Lloyd Zusman
> > > >  ljz@xxxxxxxxxx
> > > >  God bless you.
> > > > -- 
> > > > _______________________________________________
> > > > leafnode-list mailing list
> > > > leafnode-list@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
> > > > http://www.dt.e-technik.uni-dortmund.de/mailman/listinfo/leafnode-list
> > > > http://leafnode.sourceforge.net/
> > > 
> > > -- 
> > >  Lloyd Zusman
> > >  ljz@xxxxxxxxxx
> > >  God bless you.
> > > -- 
> > > _______________________________________________
> > > leafnode-list mailing list
> > > leafnode-list@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
> > > http://www.dt.e-technik.uni-dortmund.de/mailman/listinfo/leafnode-list
> > > http://leafnode.sourceforge.net/
> > 
> > -- 
> >  Lloyd Zusman
> >  ljz@xxxxxxxxxx
> >  God bless you.
> > -- 
> > _______________________________________________
> > leafnode-list mailing list
> > leafnode-list@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
> > http://www.dt.e-technik.uni-dortmund.de/mailman/listinfo/leafnode-list
> > http://leafnode.sourceforge.net/
> 
> -- 
>  Lloyd Zusman
>  ljz@xxxxxxxxxx
>  God bless you.
> -- 
> _______________________________________________
> leafnode-list mailing list
> leafnode-list@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
> http://www.dt.e-technik.uni-dortmund.de/mailman/listinfo/leafnode-list
> http://leafnode.sourceforge.net/

-- 
 Lloyd Zusman
 ljz@xxxxxxxxxx
 God bless you.
-- 
_______________________________________________
leafnode-list mailing list
leafnode-list@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
http://www.dt.e-technik.uni-dortmund.de/mailman/listinfo/leafnode-list
http://leafnode.sourceforge.net/