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 623318 - [playbin2] If source setup fails the old uridecodebin is kept and breaks future playback
[playbin2] If source setup fails the old uridecodebin is kept and breaks futu...
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
0.10.30
Other Linux
: Normal blocker
: 0.10.30
Assigned To: GStreamer Maintainers
GStreamer Maintainers
: 626340 634022 (view as bug list)
Depends on: 505770
Blocks:
 
 
Reported: 2010-07-01 19:25 UTC by Sebastian Dröge (slomo)
Modified: 2010-11-04 21:23 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
playbin2: If setup of the source element fails in READY->PAUSED deactive the current group (2.75 KB, patch)
2010-07-01 19:26 UTC, Sebastian Dröge (slomo)
committed Details | Review

Description Sebastian Dröge (slomo) 2010-07-01 19:25:39 UTC
+++ This bug was initially created as a clone of Bug #505770 +++

Due to the change in bug #505770 a bug in playbin2 was exposed. When the source setup failed in playbin2, the failing group is not deactivated, which means that the failing uridecodebin will still be a child of playbin2 and that the signals are still connected. Future state changes affect the old, failed uridecodebin and will then cause signal emission, which then will confuse playbin2 or even worse, cause crashes and assertions.
Comment 1 Sebastian Dröge (slomo) 2010-07-01 19:26:08 UTC
Created attachment 165048 [details] [review]
playbin2: If setup of the source element fails in READY->PAUSED deactive the current group

Otherwise the uridecodebin will be still a child of playbin2 and
its signals will still be connected. In future state changes this
will then emit unrelated signals that will confuse playbin2 or,
even worse, cause crashes and assertions.

Fixes bug #623318.
Comment 2 Edward Hervey 2010-07-02 05:54:10 UTC
Looks good to me.
Comment 3 Tim-Philipp Müller 2010-07-02 09:27:00 UTC
Looks good and works well for me, thanks. Let's get it in.

I'm not sure I fully understand how the change from bug #505770 exposes this bug exactly though - can anyone explain (does anyone know)?
Comment 4 Sebastian Dröge (slomo) 2010-07-02 10:07:35 UTC
I think it happens because the old uridecodebin posts an error message on the bus and in the GstElement/GstBin state change function of playbin2 the error message causes a state change failure now.

The assertion on g_object_get(uridecodebin, ...) with uridecodebin==NULL should've happened previously too and the application probably got an error message from the broken uridecodebin too... but I didn't check this.
Comment 5 Sebastian Dröge (slomo) 2010-07-02 10:16:47 UTC
commit bc0eefaeada3aef3c73db1a270af641253d32f33
Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
Date:   Thu Jul 1 21:21:38 2010 +0200

    playbin2: If setup of the source element fails in READY->PAUSED deactive the
    
    Otherwise the uridecodebin will be still a child of playbin2 and
    its signals will still be connected. In future state changes this
    will then emit unrelated signals that will confuse playbin2 or,
    even worse, cause crashes and assertions.
    
    Fixes bug #623318.
Comment 6 Philip Withnall 2010-08-07 22:26:58 UTC
*** Bug 626340 has been marked as a duplicate of this bug. ***
Comment 7 Philip Withnall 2010-11-04 21:23:00 UTC
*** Bug 634022 has been marked as a duplicate of this bug. ***