Memleak debugging
Mathieu Duponchelle
mathieu at centricular.com
Tue Sep 6 09:14:07 UTC 2022
Hey Florian,
You need to make sure to release all references to elements, for
instance clear self.mixers, self.outputs etc :)
Hope that helps
On Tue, 2022-09-06 at 08:39 +0200, Florian Echtler via gstreamer-devel
wrote:
> Hi everyone,
>
> I noticed a resource leak in my Python-based WebRTC application after
> extended
> runtime; it hangs with the repeated error message
> "gst_poll_read_control:
> assertion 'set != NULL' failed". AFAICT this likely means that too
> many GstBus
> objects or bus watches are still hanging around.
>
> I've taken care to cleanup all resources when a client disconnects
> and I've
> verified this via the debug dot graph; there are no unexpected
> elements or pads
> hanging around anymore.
>
> However, when I use the leak tracer, then it complains about a huge
> amount of
> leaks, including all the elements I supposedly removed (e.g. after 4
> clients
> have connected and disconnected, the leak tracer shows 4 leaked
> GstWebRTCBin
> objects).
>
> Here's a snippet from the code I use to tidy up after a client
> disconnects:
>
> # pause the bin
> self.wrb.bin.set_state(Gst.State.NULL)
>
> # pause, unlink, and remove the output buffers
> logging.debug(" Removing outputs...")
> for i in self.outputs:
> out_tee = self.outputs[i]
> out_tee.set_state(Gst.State.NULL)
> for p in out_tee.srcpads:
> p.unlink(p.get_peer())
> remove_element(out_tee)
>
> # remove the bin
> logging.debug(" Removing main bin...")
> remove_element(self.wrb.bin)
>
> AFAICT, if I stop and remove a bin, then it should deal with its
> internal
> components on its own, correct? Is there something I'm missing? I did
> not use
> blocking pad probes here because I don't care about buffers getting
> lost at this
> point.
>
> Any hints welcome!
>
> For reference, the full code is here:
> https://github.com/floe/surfacestreams/blob/main/client.py#L84-L140
>
> Thanks and best, Florian
> --
> SENT FROM MY DEC VT50 TERMINAL
More information about the gstreamer-devel
mailing list