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 328491 - Sending FLUSH_START blocks in GstCollectPads
Sending FLUSH_START blocks in GstCollectPads
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
Other Linux
: Normal normal
: 0.10.3
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Reported: 2006-01-24 21:58 UTC by Mark Nauwelaerts
Modified: 2006-02-06 21:34 UTC
See Also:
GNOME target: ---
GNOME version: ---

Possible patch. (1015 bytes, patch)
2006-01-24 22:02 UTC, Mark Nauwelaerts
none Details | Review
Possible patch (alternative) (2.24 KB, patch)
2006-01-24 22:06 UTC, Mark Nauwelaerts
none Details | Review

Description Mark Nauwelaerts 2006-01-24 21:58:00 UTC
To reproduce:
Consider a GstCollectPads based-element (e.g. muxer) whose pads are being fed by various task-based elements, say GstQueue in sequel.
Very likely, all but one of these tasks are always kept waiting in gst_collect_pads_chain as the one-element queue (for the pad) has a buffer.
Now consider a FLUSH_START going through the pipeling (e.g. part of FLUSHing seek); it arrives at GstQueue, which forwards the event to unblock its task (if needed).  GstCollectPads ignores this, keeps the task waiting, after which GstQueue tries to gst_pad_pause_task(), which blocks the event'ing thread.
Also, if any of the "feeding" tasks does stop, the "imbalance" keeps GstCollectPads waiting, blocking the pipeline.
Comment 1 Mark Nauwelaerts 2006-01-24 22:02:38 UTC
Created attachment 58051 [details] [review]
Possible patch.

Resolves bug by letting GstCollectPads respond to FLUSH_START/STOP
(by stopping to collect and unblock tasks in chain functions).
Comment 2 Mark Nauwelaerts 2006-01-24 22:06:51 UTC
Created attachment 58052 [details] [review]
Possible patch (alternative)

This patch does roughly the same as the previous, though:
- it releases blocked tasks (and re-starts) one-by-one, rather than all at once
- as a disadvantage, it is a bit more "invasive" in GstCollectData
Comment 3 Julien MOUTTE 2006-02-05 16:21:45 UTC
Fixed in CVS HEAD.