This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: memory leak in res_nsend()


On 24.10.2005 21:57, Daniel Jacobowitz wrote:
On Mon, Oct 24, 2005 at 09:45:42PM +0400, Antony Dovgal wrote:
On 24.10.2005 21:14, Daniel Jacobowitz wrote:
>On Mon, Oct 24, 2005 at 02:28:03PM +0400, Antony Dovgal wrote:
>>But res_nclose() doesn't free those segments.
>>That's what I've found in res_thread_freeres () function >>(resolv/res_init.c):
>
>Well, when you're running under valgrind, the freeres functions are
>supposed to be called - for exactly this reason.


Could you please elaborate: why should valgrind call something?
*I'm* calling res_nsend() and I suppose valgrind shouldn't call anything to free resources allocated by the user function calls.
Am I wrong?

Partly. valgrind frees things that would ordinarily be freed by exit(), so that it can detect leaks better.

If it's doing that and still reporting a leak, then perhaps it should
be calling __libc_thread_freeres in still-alive threads at exit.

__libc_thread_freeres(void) frees global _res, while I need to free resources associated with my local __res_state struct. I honestly do not understand how can valgrind help me with that calling __libc_thread_freeres().

--
Wbr, Antony Dovgal



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]