Setting Pipeline State to NULL can at time take over 10 seconds

Tim-Philipp Müller t.i.m at zen.co.uk
Tue Sep 10 01:03:26 PDT 2013


On Mon, 2013-09-09 at 22:18 +0100, declan harrison wrote:

Hi,

> This works well generally, however under light load when I am cleaning
> up the pipeline after it has finished I see great variations of the
> time taken to set the Pipeline state to NULL (from playing state).  It
> varies  from a few milliseconds to over 14 or 15 seconds.  Took a few
> pstack during load and see a number of threads showing the stack
> traces below.
> ...
> So my question are, Why is setting the state to null on the pieline
> taking so long?  Is the order of tasks performed shown above when I
> cleanup the pipeline correct?

This is a lot. What are the network elements used, esp. the sink
element? It sounds like maybe you're using a network element that
doesn't do non-blocking I/O, it might be stuck in a write/send() call.

Yes, the order is fine. Though you can just unref the whole pipeline to
clean it all up (incl. children).

> I have a suspicion that the network stream maybe the cause of the
> issue here, Im wondering if the input or output network stream has
> been removed before all the elements states have transitioned to a
> NULL state.  Would this cause an issue with setting the pipeline
> state?

It would be good to get a stack trace of *all* threads ('thread apply
all bt' in gdb).


> Im using GStreamer 0.10, on RHEL 64 bit architecture. 

Bit confusing that the directory is called .../gstreamer/1.0/ then :)

Cheers
 -Tim




More information about the gstreamer-devel mailing list