This is the mail archive of the glibc-bugs@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]

[Bug network/14984] New: getnameinfo() might be leaking memory


http://sourceware.org/bugzilla/show_bug.cgi?id=14984

             Bug #: 14984
           Summary: getnameinfo() might be leaking memory
           Product: glibc
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: network
        AssignedTo: unassigned@sourceware.org
        ReportedBy: emaentra@ngi.it
    Classification: Unclassified


Hi, as per summary, I'm running into some apparent memory leaks by
getnameinfo().
I'm using Ubuntu 12.04 (Linux scv 3.2.0-35-generic #55-Ubuntu SMP Wed Dec 5
17:42:16 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux) with gcc version 4.6.3.
glibc should be 2.15.

When I invoke getnameinfo(), valgrind reports a memory leak:
==4425== 
==4425== HEAP SUMMARY:
==4425==     in use at exit: 10 bytes in 1 blocks
==4425==   total heap usage: 4,508 allocs, 4,507 frees, 134,939,153 bytes
allocated
==4425== 
==4425== 10 bytes in 1 blocks are definitely lost in loss record 1 of 1
==4425==    at 0x4C2B6CD: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4425==    by 0x50D7D71: strdup (strdup.c:43)
==4425==    by 0x1484B861: ???
==4425==    by 0x515B871: gethostbyaddr_r@@GLIBC_2.2.5 (getXXbyYY_r.c:256)
==4425==    by 0x5161D06: getnameinfo (getnameinfo.c:223)
==4425==    by 0x404175: solsrv_run (solsrv.c:381)
==4425==    by 0x404DAC: main (main.c:167)
==4425== 
==4425== LEAK SUMMARY:
==4425==    definitely lost: 10 bytes in 1 blocks
==4425==    indirectly lost: 0 bytes in 0 blocks
==4425==      possibly lost: 0 bytes in 0 blocks
==4425==    still reachable: 0 bytes in 0 blocks
==4425==         suppressed: 0 bytes in 0 blocks
==4425== 
==4425== For counts of detected and suppressed errors, rerun with: -v
==4425== ERROR SUMMARY: 12 errors from 11 contexts (suppressed: 2 from 2)

As you can see looks like valgrind is using an old version of GLIBC.
Could you please confirm if this is a valgrind issue or a genuine glibc memory
leak on getnameinfo()?
Code generating the apparent leak is:

struct sockaddr addr;
socklen_t           addr_sz = sizeof(addr);
char        host[NI_MAXHOST],
            serv[NI_MAXSERV];
int infd = accept(srv_fd, (struct sockaddr*)&addr, &addr_sz);
if (infd == -1) {
    ... manage error on accept ...
}
if(getnameinfo((struct sockaddr *)&addr, addr_sz, host, NI_MAXHOST, serv,
NI_MAXSERV, NI_NUMERICSERV)) {
    strncpy(host, "<unknown host>", NI_MAXHOST-1);
    strncpy(serv, "<unknown port>", NI_MAXSERV-1);
}

The more I execute getnameinfo() (i.e. for each client which connects to the
server), the more memory is apparently leaked.

Thanks

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


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