[libnice] Memory leaks

Philip Withnall philip at tecnocode.co.uk
Fri May 1 15:20:00 PDT 2015


Can you please verify that by:
 1. Running your test program under gdb, breaking on
    g_main_context_unref, and checking that it is actually freed.
 2. Separately, running your test program with gobject-list[1] or the
    environment variable GOBJECT_DEBUG=objects,instance-count set, and
    seeing what objects are left over on exit.

Sorry I’m asking for so much information, but leaks like this in libnice
depend on a lot of control flow which I have very little chance of
replicating.

Thanks,
Philip

[1]: https://github.com/danni/gobject-list

On Tue, 2015-04-28 at 10:24 +0200, Miguel París Díaz wrote:
> Yes, main contexts are freed
> 
> 
> 2015-04-26 18:47 GMT+02:00 Philip Withnall <philip at tecnocode.co.uk>:
>         Olivier is correct that you shouldn't need to remove the
>         stream if the NiceAgent is finalised. However, the NiceAgent
>         might not be finalised if you have the GMainContext problems I
>         mentioned earlier. Have you verified that all your
>         GMainContexts are freed before exiting?
>         
>         Philip
>         
>         On Apr 25, 2015 6:09 PM, "Miguel París Díaz"
>         <mparisdiaz at gmail.com> wrote:
>                 I supposed it and agree with Olivier, so we can verify
>                 that there are memory leaks into libnice v01.10, isn't
>                 it?
>                 
>                 
>                 2015-04-25 18:48 GMT+02:00 Olivier Crête
>                 <olivier.crete at collabora.com>:
>                         
>                         
>                         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
>                 
>                 
>                 
>                 -- 
>                 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/20150501/f6e7180b/attachment.sig>


More information about the nice mailing list