[libnice] Memory leaks

Philip Withnall philip at tecnocode.co.uk
Fri Apr 24 02:58:51 PDT 2015


Hey,

On Tue, 2015-04-21 at 19:15 +0200, Miguel París Díaz wrote:
> Hello again,
> 
> I have run valgrind again with debug symbol and this is the output for
> libnice v0.1.10:

Thanks, that is a bit more useful. I have omitted all but the relevant
parts below.

> nice_agent_gather_candidates
> ==12303== 688 (80 direct, 608 indirect) bytes in 2 blocks are
> definitely lost in loss record 8,233 of 8,519
> ==12303==    by 0xA6A8E1E: discovery_add_local_host_candidate
> (discovery.c:563)
> ==12303==    by 0xA69F7C2: nice_agent_gather_candidates (agent.c:2737)

> ==12303== 528 (208 direct, 320 indirect) bytes in 2 blocks are
> definitely lost in loss record 8,131 of 8,519
*snip*
> ==12303==    by 0xA6B26F1: nice_tcp_active_socket_new
> (tcp-active.c:106)
> ==12303==    by 0xA6A8DFE: discovery_add_local_host_candidate
> (discovery.c:561)
> ==12303==    by 0xA69F7C2: nice_agent_gather_candidates (agent.c:2737)

> nice_agent_add_stream
> ==12303== 144 bytes in 2 blocks are possibly lost in loss record 7,624
> of 8,519
*snip*
> ==12303==    by 0x792F40B: g_cancellable_source_new
> (in /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0.4200.1)
> ==12303==    by 0xA697CB1: component_new (component.c:150)
> ==12303==    by 0xA6A1EDF: stream_new (stream.c:68)
> ==12303==    by 0xA69B49F: nice_agent_add_stream (agent.c:2361)
> ==12303==    by 0xA27F6B5: kms_webrtc_base_connection_configure
> (kmswebrtcbaseconnection.c:35)

All of these traces look related, but I cannot fix them without checking
a few things first. I have fixed a number of leaks like this before, and
typically the problem is actually that the GMainContext still has
pending events when it is stopped. This means one or more GSources are
kept alive. In libnice, this generally means an associated GSocket is
also kept alive, which is what is leaking above.

Are you absolutely sure that:
 • your test code is not leaking a NiceAgent;
 • your test code is not leaking a stream (use
nice_agent_remove_stream()); and
 • there are no pending events left in your GMainContexts when they are
stopped or destroyed (and that they are actually destroyed).

> I cannot reproduce the memory leak that I reported some days ago about
> g_source_set_dummy_callback. But I have searched for it into libnice
> code, and I have found this entries:

This is related: that also is a GSource which is not getting freed
somewhere.

Thanks,
Philip

> 2015-04-15 13:08 GMT+02:00 Miguel París Díaz <mparisdiaz at gmail.com>:
>         Yes, you are right, sorry for not sending a complete report.
>         
>         I will do it when I can and send the report again ;).
>         
>         
>         2015-04-13 16:32 GMT+02:00 Philip Withnall
>         <philip at tecnocode.co.uk>:
>                 Hi,
>                 
>                 On Mon, 2015-04-13 at 13:10 +0200, Miguel París Díaz
>                 wrote:
>                 > Hello,
>                 >
>                 > I have tested my system with valgrind and I have
>                 seen some memory
>                 > leaks into libnice v0.1.10.
>                 > Valgind does not detect any memory leak running the
>                 same tests with
>                 > v0.1.7.
>                 >
>                 > I hope this can help you to fix them ;).
>                 
>                 Not really, without the necessary debug symbols
>                 (replacing the ‘???’
>                 entries in the stack traces below).
>                 
>                 Can you please install the debug info package for your
>                 distribution for
>                 libnice, or recompile it with debug symbols enabled;
>                 then produce a new
>                 set of leak traces with valgrind?
>                 
>                 Thanks,
>                 Philip
>                 
>         
>         
>         
>         
>         -- 
>         Miguel París Díaz
>         ------------------------------------------------------------------------
>         Computer/Software engineer.
>         Researcher and architect in http://www.kurento.org
>         http://twitter.com/mparisdiaz
>         ------------------------------------------------------------------------
>         
> 
> 
> 
> -- 
> Miguel París Díaz
> ------------------------------------------------------------------------
> Computer/Software engineer.
> Researcher and architect in http://www.kurento.org
> http://twitter.com/mparisdiaz
> ------------------------------------------------------------------------
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 213 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/nice/attachments/20150424/fb9fbe7d/attachment.sig>


More information about the nice mailing list