GNOME Bugzilla – Bug 158162
opt deadlock
Last modified: 2005-01-29 14:06:30 UTC
Attached patch adds an APEv1/2 tag reader. APEv1/2 is used for musepack files, for example, it's similar in scope to ID3v1/2. The element is loopbased, just like alsasink and musepackdec, but unlike osssink. Consider the following pipelines: 1: gst-launch filesrc location=$file ! apedemux ! musepackdec ! audioconvert ! alsasink 2: gst-launch filesrc location=$file ! decodebin ! audioconvert ! alsasink 3: gst-launch filesrc location=$file ! decodebin ! audioconvert ! osssink 4: gst-launch filesrc location=$file ! decodebin ! { queue ! audioconvert ! alsasink } 1, 3 and 4 work (also if you s/decodebin/spider/). 2 fails with this warning (for both decodebin and spider): ** (process:8340): WARNING **: deadlock detected, disabling group 0x9caa420 A backtrace on that warning shows that inside the loopfunc of musepackdec (on gst_pad_pull), it goes to the loopfunc of alsasink (instead of apedemux): (gdb) bt
+ Trace 51918
Sample musepack file with ape tags is in the media directory on our website in medium/. I'll attach the apedemux patch below.
Created attachment 33728 [details] [review] Patch to reproduce the problem
Created attachment 34460 [details] [review] possible fix Attached patch adds a 'run-only-me' property to the _run_queue() function in opt. _run_queue() is called from two different functions, either schedule_chain() and the opt _get_wrapper(). In the last case, you don't actually want to schedule any other elements but the one in the get-group. In the first case, you don't care which are scheduled. The reason for this distinction (I think) is that you can 'queue' chain data, whereas gets need to be handled as quickly as possible, without recursing into any other groups (which also causes the above deadlock). I didn't look too closely, didn't run testsuites (bad me), but the above pipeline (filesrc location=filewithapetags.mpc ! decodebin ! alsasink) works for me now.
Applied.
*** Bug 162005 has been marked as a duplicate of this bug. ***
*** Bug 156741 has been marked as a duplicate of this bug. ***