[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 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 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/