cvs-dev
[Top][All Lists]
Advanced

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

Re: [Cvs-dev] [PATCH, one-liner] memory leak bug (buffer.c:buf_free_data


From: Arthur Barrett
Subject: Re: [Cvs-dev] [PATCH, one-liner] memory leak bug (buffer.c:buf_free_data) in all CVS versions
Date: Mon, 14 Jan 2013 18:09:13 +1100

Sergei,

Thanks for the report.

But there are some problems.

1. you didn't attach a patch.
2. CVS 1.11.23 buffer.c does not have buf_free_data
3. CVS 1.12 buffer.c does not have buf_free_data
4. CVS 2.x/CVSNT doesn't have buf_free_data
5. cvsps is nothing to do with CVS (though the functionality is already
in CVSNT for 5 years or more)

If you can submit the missing information (patch to CVS 1.12.13 or CVS
1.11.23) that may help.

Regards,


Arthur Barrett
Product Manager, CVSNT


> -----Original Message-----
> From: 
> address@hidden 
> [mailto:address@hidden
> rg] On Behalf Of Sergei Trofimovich
> Sent: 12 January 2013 08:47
> To: address@hidden
> Subject: [Cvs-dev] [PATCH, one-liner] memory leak bug 
> (buffer.c:buf_free_data) in all CVS versions
> 
> 
> Hello ladies and gentlemen!
> 
> In my recent exploration on tools
> reading entire cvs history I've
> noticed horrible leak.
> 
> It allows to suck out all RAM out
> of your cvs server just by issuing
> any (say, cvs checkout) simple command
> many times.
> 
> A description of an attached patch with
> some numbers:
> 
>     buf_free_data must free data independently
>     of send or reseived bytes over network.
>     
>     Moreover, when buffer is usually freed
>     buffer _is_ empty, but has one clean mapped page.
> 
>     I've observed massive 'cvs server' leaks
>     when importing large gentoo-x86 repo with 'cvsps'.
>     Leak ate all my 32GBs of RAM and killed process.
>     (Leaked around 3 pages per client request).
>     
>     valgrind found the leak easily:
>     
>     $ valgrind \
>         cvsps \
>                --root :local:$HOME/portage/gentoo-x86.rsync \
>                --fast-export \
>                gentoo-x86/dev-vcs/git-annex 2>l |
>         git fast-import
> 
>         ==13504== 1,248 bytes in 52 blocks are still 
> reachable in loss record 41 of 47
>         ==13504==    at 0x4C2C19B: malloc (vg_replace_malloc.c:270)
>         ==13504==    by 0x48A556: xnmalloc_inline (xmalloc.c:40)
>         ==13504==    by 0x48A5B5: xmalloc (xmalloc.c:56)
>         ==13504==    by 0x4855F5: new_memnode (pagealign_alloc.c:91)
>         ==13504==    by 0x48571B: pagealign_alloc 
> (pagealign_alloc.c:151)
>         ==13504==    by 0x485739: pagealign_xalloc 
> (pagealign_alloc.c:182)
>         ==13504==    by 0x408DD7: get_buffer_data (buffer.c:98)
>         ==13504==    by 0x409C0C: buf_input_data (buffer.c:738)
>         ==13504==    by 0x45BB63: do_cvs_command (server.c:3847)
>         ==13504==    by 0x45D39E: serve_co (server.c:4809)
>         ==13504==    by 0x45F845: server (server.c:6438)
>         ==13504==    by 0x438784: main (main.c:1066)
> 
>     And now it takes constant space (less, than 18MB)
>     for 'cvs server' process to convert all gentoo-x86
>     by serving more, than 5 000 000 client requests.
> 
>     Signed-off-by: Sergei Trofimovich <address@hidden>
> 
> Thanks!
> 
> -- 
> 
>   Sergei
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]