GNOME Bugzilla – Bug 792522
playbin3: Do not deactivated current group when it is earlier deactivated than pad-removed signal
Last modified: 2018-02-10 13:24:15 UTC
Dear All. I've got abort crash problem when changing state to ready to pause in twice in playbin3. Actually, we have 3 appsrc and video, audio and text are feed separately. However, one of qtdemux can not recognize invalid text (e.g. This file contains no playable streams) with application/x-3gp. Then, the last state return for parsebin1 (qtdemux1) has FAILURE. After that, our player tried to set_state (paused) again in order to 3s buffering (prerolling). However, gstelement could not filter same changing state out by FAILURE (old return) and Playbin3 tried to setup_next_source () and it got GST_STATE_CHANGE_FAILURE with no_next_group and deactivated current group immediately. And g_assert was happened when pad-removed cb (e.g. when playbin3 is unloaded). g_assert (combine->srcpad == pad); But, combine->srcpad is already deactivated and unreffed. So, I wanted to add prevent code in order to solve abort crash problem. Please refer GST log with level 6. Thanks.
Created attachment 366809 [details] [review] playbin3: Do not deactivated current group when it is earlier released than pad-removed signal Dear All. Please check attached GST log and review my patch. Thanks.
Created attachment 366810 [details] GST log with level 6
Thanks for the patch. This is no longer needed with the playbin3 refactoring that was just pushed to master.