[Bug 692358] appsrc crash setting the pipeline to NULL state

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Wed Jan 23 06:47:02 PST 2013


https://bugzilla.gnome.org/show_bug.cgi?id=692358
  GStreamer | gst-plugins-base | unspecified

--- Comment #2 from Nicola <lists at svrinformatica.it> 2013-01-23 14:46:56 UTC ---
Not for now sorry, I did some more debug and found a workaround, I'll need to
explain better my use case:

- pipeline1: src ! ... ! appsink sync=false
- pipeline2: appsrc block=true ! queue ! fdsink sync=false

fdsink write to a socket, the receiver read speed can vary, 

I'm using gst_app_sink_set_callbacks and in the appsink callback, so in the
streaming thread, I do:

gst_app_src_push_buffer(GST_APP_SRC(my_appsrc), buf);

this blocks, as excepted, when the client is slow to read the data, I added
some g_print first and after this line, just to be sure:

http://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/gst-libs/gst/app/gstappsrc.c?h=0.10#n1476

now if the client disconnects I get an error on the bus (broken pipe or
similar), I cannot set to null the "first" pipeline since
gst_app_src_push_buffer is blocked and setting the state to NULL never return,
instead I can:

- send eos to appsrc, this unlock gst_app_src_push_buffer
- does not send any new buffers to appsrc
- set to null the first pipeline
- wait for an error on the appsrc pipeline, I get this one from appsrc:
streaming task paused, reason error (-5))
- set to null the appsrc pipeline

If I set to null the appsrc pipeline as I get the first bus error ofetn works
but any attempt to set to null the appsink pipeline will block/segfault,
gst_app_src_push_buffer is blocked even if the appsrc element was disposed and
finalized,

probably gst_app_src_push_buffer appsrc should unblock the push_buffer method
and unref the buffer when the pipeline is disposed/finalized,

I'll try to provide a test case in future

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list