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 487568 - gnonlin: Pipeline freezes when adding/removing GnlCompositions/GnlSources while PLAYING
gnonlin: Pipeline freezes when adding/removing GnlCompositions/GnlSources whi...
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gnonlin
git master
Other All
: Normal critical
: git master
Assigned To: GStreamer Maintainers
Edward Hervey
Depends on:
Blocks:
 
 
Reported: 2007-10-17 17:23 UTC by Dominique Würtz
Modified: 2014-11-26 15:45 UTC
See Also:
GNOME target: ---
GNOME version: 2.17/2.18


Attachments
Test script to reproduce the bug (2.12 KB, text/plain)
2007-10-17 17:24 UTC, Dominique Würtz
Details
Updated test script with async pad blocking (2.57 KB, text/plain)
2007-10-27 16:37 UTC, Dominique Würtz
Details
Same test ported to Gst 1.0 (2.54 KB, application/octet-stream)
2013-06-26 22:53 UTC, Nicolas Dufresne (ndufresne)
Details
Same test ported to Gst 1.0 (2.65 KB, application/octet-stream)
2013-06-27 00:04 UTC, Nicolas Dufresne (ndufresne)
Details

Description Dominique Würtz 2007-10-17 17:23:01 UTC
Steps to reproduce:
Run the attached Python script bug.py. This repeatedly adds and removes three compositions with a audio gnlsource in each to/from the pipeline while playing.

I apologize if the bug is in the script itself, I posted it to the gst mailing list, but received hardly any feedback.


Stack trace:


Other information:
Script seems to freeze exclusively when attempting to "Remove Track".
Possible error messages (varies):
1. (bug.py:8849): GStreamer-WARNING **: loop detected in the graph !!
2. sys:1: Warning: g_node_find: assertion `root != NULL' failed
3. (no message, just stalls!)
Comment 1 Dominique Würtz 2007-10-17 17:24:47 UTC
Created attachment 97373 [details]
Test script to reproduce the bug
Comment 2 Edward Hervey 2007-10-18 08:40:18 UTC
Hi, the big issue with your script is that you're trying to synchronously block pads.

The API documentation regarding gst_pad_set_blocked_async() will tell you why:

http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-set-blocked-async

What you want to do is give a callback, and in the callback do what you wanted to do once that pad was blocked. You have to adopt the same paradigms as with event-based programming.

Please adjust your script accordingly and confirm if that fixed your issue.
Comment 3 Dominique Würtz 2007-10-27 16:37:37 UTC
Created attachment 97976 [details]
Updated test script with async pad blocking

OK, here is my script adjusted to use async pad blocking. However, it seems that the freezes occur mostly when attempting to remove a track whose srcpad has not been created yet (lines 64ff), so blocking doesn't seem to play a role here.
Comment 4 Edward Hervey 2009-03-13 10:25:05 UTC
Dominique, a lot happened in the past year and a half in gnonlin, do you still see this issue with the current 0.10.10.2 pre-release ?
Comment 5 Dominique Würtz 2009-03-24 18:35:57 UTC
Sorry, using gnonlin-0.10.10.2 on Ubuntu 8.10 the freezes still occur.

(In reply to comment #4)
> Dominique, a lot happened in the past year and a half in gnonlin, do you still
> see this issue with the current 0.10.10.2 pre-release ?
> 
Comment 6 Edward Hervey 2011-05-16 18:51:30 UTC
grmbl, still happens
Comment 7 Nicolas Dufresne (ndufresne) 2013-06-26 22:53:13 UTC
Created attachment 247860 [details]
Same test ported to Gst 1.0

I have ported this test to Gst 1.0 and runned it on current git master of GNonLin and it does not crash anymore. Though I seems to hang after a while.
Comment 8 Nicolas Dufresne (ndufresne) 2013-06-27 00:04:50 UTC
Created attachment 247863 [details]
Same test ported to Gst 1.0

There was few porting errors. I did a second pass, fixing probe and adding "commit" emission as pad-added will never be called otherwise. So far it crashes in python, there must be something do do in pad-added as it's called from a separate thread. I'll probably just rewrite this in C to at least verify if this bug still exist.
Comment 9 Tim-Philipp Müller 2014-11-26 15:26:20 UTC
What's up with this?

Nicolas, are you going to port your Gst 1.0 test case to C?

Is anyone still interested in fixing this or shall we close this seeing that gnonlin is about to be replaced?
Comment 10 Thibault Saunier 2014-11-26 15:45:51 UTC
Actually this is properly support and tested in NLE so let's just close as "obselete"