[libnice] Memory leaks

Olivier Crête olivier.crete at collabora.com
Sat Apr 25 09:48:48 PDT 2015



On April 25, 2015 11:58:04 AM EDT, "Miguel París Díaz" <mparisdiaz at gmail.com> wrote:
>Hello, I am not doing nice_agent_remove_stream(), it is needed in
>v0.1.10
>even if the NiceAgent is released?
>Moreover, using the same code with v0.1.7 there is not any memory leak
>detected by valgrind.

It shouldn't be needed. 

Olivier 


>2015-04-24 11:58 GMT+02:00 Philip Withnall <philip at tecnocode.co.uk>:
>
>> 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
>> >
>------------------------------------------------------------------------
>> >
>>
>>

-- 
Olivier Crête
olivier.crete at collabora.com


More information about the nice mailing list