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 787323 - ghostpad : Issue in setting pad mode for a bin created dynamically(when pipeline is running)
ghostpad : Issue in setting pad mode for a bin created dynamically(when pipel...
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
1.12.1
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-09-05 17:37 UTC by Baby octopus
Modified: 2018-11-03 12:42 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Sample application to reproduce the issue(based on test-segment-seek) (5.67 KB, text/x-csrc)
2017-09-05 17:37 UTC, Baby octopus
Details
Testbench with more comments and removed unnecessary code (5.53 KB, text/x-csrc)
2017-09-05 17:47 UTC, Baby octopus
Details

Description Baby octopus 2017-09-05 17:37:16 UTC
Created attachment 359221 [details]
Sample application to reproduce the issue(based on test-segment-seek)

I have had this issue in my application which I'm able to reproduce in a small testbench

I have a pipeline gst-launch-1.0 playbin uri=xxx.mp4. When this file xxx.mp4 play is done, 
1. I create another srcBin ! typefind ! sink branch and add to the pipeline(and link). SrcBin is a bin encapsulating filesrc
2. Call gst_bin_sync_children_states()

I see that the filesrc's pad activation function called 3 times, pull-pull-push mode. However, typefind thinks the pad in PULL mode. And this gives error *pull range on pad bin_src_pad:proxypad16 but it wasnot activated in pull mode*

No such issue is seen is srcBin is replaced with filesrc(make #if 0 in line 156)

It seems like some bug in ghostpad's pad activation when done when pipeline is running
Comment 1 Baby octopus 2017-09-05 17:47:10 UTC
Created attachment 359223 [details]
Testbench with more comments and removed unnecessary code
Comment 2 Matthew Waters (ystreet00) 2017-09-06 04:37:47 UTC
This is not a clear cut example that it's proxypad's fault.

The aforementioned example is the only time I can reproduce this.
- Adding the new elements to a new pipeline does not exhibit the problem.
- Replacing typefind with identity does not exhibit the problem.
- Starting the two branches together (i.e. don't finish playing the file in playbin and then add elements) does not exhibit the problem.
Comment 3 Baby octopus 2017-09-06 06:21:43 UTC
This happens with only those elements who work in pull mode(typefind). Hence we dont see the issue with the typefind

It is a right observation that starting both the branches together do not cause any issue. 

Some undesired things happen when we call gst_bin_sync_children_states(). Filesrc decides to work in pull mode initially upon which typefind calls for get_range. But in-between that, filesrc decided it will work in PUSH, which causes this assertion
Comment 4 Baby octopus 2017-09-06 08:51:24 UTC
*Hence we dont see the issue with the identity
Comment 5 GStreamer system administrator 2018-11-03 12:42:30 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/249.