After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 655532 - Pipeline 'filesrc ! mpegpsdemux ! fakesink' deadlocks
Pipeline 'filesrc ! mpegpsdemux ! fakesink' deadlocks
Status: RESOLVED NOTABUG
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
0.10.22
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2011-07-28 19:33 UTC by Peter Seiderer
Modified: 2011-08-02 20:59 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Example deadlocking program. (2.84 KB, text/x-csrc)
2011-07-28 19:33 UTC, Peter Seiderer
Details
Example fixed program (3.40 KB, text/x-csrc)
2011-08-02 20:59 UTC, Peter Seiderer
Details

Description Peter Seiderer 2011-07-28 19:33:27 UTC
Created attachment 192832 [details]
Example deadlocking program.

The 'gst-launch -v filesrc location=test.mpg ! mpegpsdemux ! fakesink' shows the expected sequence of buffers as output.

The same pipeline as program (gst_demux.c attached) deadlocks without any fakesink handoff signals.

Here the last lines of the 'GST_DEBUG=*:5 ./gst_demux' output:

0:00:00.828002194  2820  0x804c008 INFO                 filesrc gstfilesrc.c:965:gst_file_src_start:<file_src> opening file MPEGIO_MPEG2_176X144_Video1024Kbps.mpg
0:00:00.828888894  2820  0x815d528 INFO             mpegpsdemux gstmpegdemux.c:2565:gst_flups_sink_get_duration:<decode> sink segment configured bytes segment start=0, stop=1710080, last_stop=0, duration=1710080, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, accum=0:00:00.000000000
0:00:00.828995071  2820  0x815d528 INFO             mpegpsdemux gstmpegdemux.c:2567:gst_flups_sink_get_duration:<decode> src segment configured time segment start=0:00:00.568055555, stop=99:99:99.999999999, last_stop=0:00:00.568055555, duration=0:00:10.135588888, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, accum=0:00:00.000000000
0:00:00.831729704  2820  0x815d528 INFO        GST_ELEMENT_PADS gstelement.c:722:gst_element_add_pad:<decode> adding pad 'video_e0'
0:00:00.831806393  2820  0x815d528 INFO             mpegpsdemux gstmpegdemux.c:508:gst_flups_demux_send_data:<decode> sending new segment: rate 1 applied_rate 1 start: 0:00:00.568055555, stop: 99:99:99.999999999, time: 0:00:00.568055555 to pad <decode:video_e0>
0:00:00.831869444  2820  0x815d528 INFO               GST_EVENT gstevent.c:599:gst_event_new_new_segment_full: creating newsegment update 0, rate 1.000000, format GST_FORMAT_TIME, start 0:00:00.568055555, stop 99:99:99.999999999, position 0:00:00.568055555
0:00:00.832070928  2820  0x815d528 INFO        GST_ELEMENT_PADS gstelement.c:722:gst_element_add_pad:<decode> adding pad 'audio_c0'
0:00:00.832099385  2820  0x815d528 INFO             mpegpsdemux gstmpegdemux.c:508:gst_flups_demux_send_data:<decode> sending new segment: rate 1 applied_rate 1 start: 0:00:00.568055555, stop: 99:99:99.999999999, time: 0:00:00.568055555 to pad <decode:audio_c0>
0:00:00.832133988  2820  0x815d528 INFO               GST_EVENT gstevent.c:599:gst_event_new_new_segment_full: creating newsegment update 0, rate 1.000000, format GST_FORMAT_TIME, start 0:00:00.568055555, stop 99:99:99.999999999, position 0:00:00.568055555
0:00:00.844035046  2820  0x815d528 INFO          GST_SCHEDULING gstpad.c:4995:gst_pad_get_range_unchecked:<file_src:src> getrange failed, flow: unexpected
0:00:00.844090714  2820  0x815d528 INFO          GST_SCHEDULING gstpad.c:5141:gst_pad_pull_range:<decode:sink> pullrange failed, flow: unexpected
0:00:00.844183208  2820  0x804c008 INFO              GST_STATES gstelement.c:2408:gst_element_continue_state:<decode> completed state change to PAUSED
0:00:00.844205386  2820  0x804c008 INFO              GST_STATES gstelement.c:2421:gst_element_continue_state:<decode> posting state-changed READY to PAUSED
0:00:00.844252802  2820  0x804c008 INFO              GST_STATES gstbin.c:2497:gst_bin_change_state_func:<pipeline> child 'decode' changed state to 3(PAUSED) successfully
0:00:00.844293105  2820  0x804c008 INFO              GST_STATES gstelement.c:2408:gst_element_continue_state:<file_src> completed state change to PAUSED
0:00:00.844311697  2820  0x804c008 INFO              GST_STATES gstelement.c:2421:gst_element_continue_state:<file_src> posting state-changed READY to PAUSED
0:00:00.844337602  2820  0x804c008 INFO              GST_STATES gstbin.c:2497:gst_bin_change_state_func:<pipeline> child 'file_src' changed state to 3(PAUSED) successfully

GStreamer versions (on OpenSuse-11.2):
gstreamer-0.10.35
gst-plugins-base-0.10.35
gst-plugins-good-0.10.30
gst-plugins-bad-0.10.22
gst-plugins-ugly-0.10.18
Comment 1 Peter Seiderer 2011-08-02 20:57:38 UTC
A bug in the example program, added an assert for the gst_element_link_many() call return value. This one failed. Added dynamic linking like in the 'GStreamer Application Development Manual (0.10.35) / Chapter 10.1. Hello world' program. Now the example runs like expected. Sorry for the noise....
Comment 2 Peter Seiderer 2011-08-02 20:59:07 UTC
Created attachment 193105 [details]
Example fixed program