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 347452 - Seeking hangs after so many seeks
Seeking hangs after so many seeks
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: dont know
git master
Other All
: Normal critical
: 0.10.10
Assigned To: Wim Taymans
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2006-07-13 22:24 UTC by Jono Bacon
Modified: 2006-07-28 14:11 UTC
See Also:
GNOME target: ---
GNOME version: 2.13/2.14


Attachments
Debug log. (307.73 KB, application/x-gzip)
2006-07-13 22:25 UTC, Jono Bacon
Details
backtrace for scenario 1 (38.56 KB, text/plain)
2006-07-14 09:27 UTC, Jan Schmidt
Details
backtrace for scenario 2 (33.31 KB, text/plain)
2006-07-14 09:28 UTC, Jan Schmidt
Details
last 10MB of a debug log for 'scenario 2' (740.32 KB, application/x-gzip)
2006-07-14 09:30 UTC, Jan Schmidt
Details

Description Jono Bacon 2006-07-13 22:24:21 UTC
Please describe the problem:
In Jokosher you can click on the timeline ruler after pressing play and the pipeline seeks to that point. After a certain amount of seeks (not a reproducable number), Jokosher hangs.

This only seems to happen with more than one instrument, which suggests it is an adder related bug.

Attached is a log file. Look out for the Python debug messages - I added a message to indicate when we seek. I also included colour in the debug log.

Steps to reproduce:
1. In Jokosher, press play.
2. Keep seeking by clicking different bits of the timeline
3. 


Actual results:
It hangs Jokosher.

Expected results:
It seeks normally. I.e. Doesn't hang. :P

Does this happen every time?
After so many clicks, yes.

Other information:
I will buy a pint to a GStreamer developer who fixes this before the next release and gets it included. This way we can run Jokosher completely with the next release due over the next few days.
Comment 1 Jono Bacon 2006-07-13 22:25:53 UTC
Created attachment 68887 [details]
Debug log.

This debug log is for a session where I have two instruments with an ogg file on each and I keep seeking until it hangs.
Comment 2 Jan Schmidt 2006-07-14 09:23:29 UTC
I did a bit of digging on this last night. I saw 2 separate hangs, attaching backtraces for both.

The first one seems to be: A deadlock while sending the seek to sink1 while sink0 is chained through adder to the sink.

The 2nd: Sending the seek through sink1 blocks because the stream on sink1 is still blocked at Adder's collectpads as if it never received a flush-start to wake it up.
Comment 3 Jan Schmidt 2006-07-14 09:27:36 UTC
Created attachment 68910 [details]
backtrace for scenario 1
Comment 4 Jan Schmidt 2006-07-14 09:28:02 UTC
Created attachment 68911 [details]
backtrace for scenario 2
Comment 5 Jan Schmidt 2006-07-14 09:30:38 UTC
Created attachment 68912 [details]
last 10MB of a debug log for 'scenario 2'
Comment 6 Wim Taymans 2006-07-28 14:11:06 UTC
Lots of fixes here.. sigh...

Can't make it deadlock anymore with  ./seek 15 "audiotestsrc freq=330 ! adder name=add  audiotestsrc freq=550 ! add. add. ! alsasink" in scrubbing mode (which used to lock up after a few seconds of seeking madness before this patch with similar stacktraces as the ones in the bugreport)

        * libs/gst/base/gstcollectpads.c:
        (gst_collect_pads_set_flushing_unlocked), (gst_collect_pads_pop),
        (gst_collect_pads_clear), (gst_collect_pads_flush),
        (gst_collect_pads_event), (gst_collect_pads_chain):
        When flushing a pad, also clear the queued buffer so that we don't
        accidentally use it when we shouldn't.
        Fix leaks by inreffing incomming buffer.
        Flush out queued buffers in case of errors.
        Fixes #347452.