GNOME Bugzilla – Bug 605219
Freezes nearly always when switching Audio CDs
Last modified: 2009-12-29 11:57:07 UTC
(Fedora 12 with rhythmbox-0.12.5-8.fc12.i686) 1. Listen to Audio CD in Rhythmbox. 2. Remove Audio CD and do not close Rhythmbox. 3. Put in a new Audio CD. 4. Click away "How to open" popup as Rhythmbox is still open 5. In Rhythmbox, click the first song in the list on the new Audio CD 6. Get a red "Cannot play this" icon in front of it plus the following output: MusicBrainz: Connecting to http://musicbrainz.org:80 MusicBrainz: GET /ws/1/release/?type=xml&discid=ukV8lM9dVohw45tqcBb6oy9xd04- [Thread 0xb4febb70 (LWP 7753) exited] MusicBrainz: Result: 0 (200 OK) MusicBrainz: Status: 200 MusicBrainz: Response: <?xml version="1.0" encoding="UTF-8"?><metadata xmlns="http://musicbrainz.org/ns/mmd-1.0#" xmlns:ext="http://musicbrainz.org/ns/ext-1.0#"><release-list></release-list></metadata> [Thread 0xb35ffb70 (LWP 7754) exited] [New Thread 0xb4febb70 (LWP 7756)] [New Thread 0xb29ffb70 (LWP 7757)] [Thread 0xb4febb70 (LWP 7756) exited] [Thread 0xb29ffb70 (LWP 7757) exited] [New Thread 0xb29ffb70 (LWP 7758)] (rhythmbox:6244): GStreamer-WARNING **: Name queue is not unique in bin uridecodebin0, not adding (rhythmbox:6244): GStreamer-CRITICAL **: gst_caps_get_structure: assertion `index < caps->structs->len' failed (rhythmbox:6244): GStreamer-CRITICAL **: gst_structure_get_name: assertion `structure != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed 1:24:28.199851178 6244 0x898ec08 ERROR playbin2 gstplaybin2.c:2218:pad_added_cb:<playbin20> unknown type (null) for pad uridecodebin0:src3 [New Thread 0xb4febb70 (LWP 7759)] [New Thread 0xb15fdb70 (LWP 7760)] [New Thread 0xb01fbb70 (LWP 7761)] [New Thread 0xaf7fab70 (LWP 7762)] [New Thread 0xaedf9b70 (LWP 7763)] [New Thread 0xae3f8b70 (LWP 7764)] [Thread 0xb4febb70 (LWP 7759) exited] [Thread 0xb01fbb70 (LWP 7761) exited] [Thread 0xb15fdb70 (LWP 7760) exited] [Thread 0xae3f8b70 (LWP 7764) exited] [Thread 0xaf7fab70 (LWP 7762) exited] [Thread 0xaedf9b70 (LWP 7763) exited] (rhythmbox:6244): Rhythmbox-CRITICAL **: playing_stream_cb: assertion `entry != NULL' failed [Thread 0xb29ffb70 (LWP 7758) exited] (rhythmbox:6244): RhythmDB-CRITICAL **: rhythmdb_entry_get_ulong: assertion `entry != NULL' failed (rhythmbox:6244): RhythmDB-CRITICAL **: rhythmdb_entry_get_string: assertion `entry != NULL' failed [...] plus dozens more of the last two lines Trying to switch to the Rhythmbox window again I have a freeze, though gdb still shows thread activity. (rhythmbox:6244): GStreamer-WARNING **: Name queue is not unique in bin uridecodebin0, not adding (rhythmbox:6244): GStreamer-CRITICAL **: gst_caps_get_structure: assertion `index < caps->structs->len' failed (rhythmbox:6244): GStreamer-CRITICAL **: gst_structure_get_name: assertion `structure != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed (rhythmbox:6244): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed 1:25:22.175364570 6244 0x895fe10 ERROR playbin2 gstplaybin2.c:2218:pad_added_cb:<playbin20> unknown type (null) for pad uridecodebin0:src4 [New Thread 0xb29ffb70 (LWP 7773)] [New Thread 0xaf7fab70 (LWP 7774)] [New Thread 0xb4febb70 (LWP 7775)] [New Thread 0xb15fdb70 (LWP 7776)] [New Thread 0xb01fbb70 (LWP 7777)] [New Thread 0xae3f8b70 (LWP 7778)] [New Thread 0xad9f7b70 (LWP 7779)] [Thread 0xaedf9b70 (LWP 7772) exited] [New Thread 0xaedf9b70 (LWP 7780)] [New Thread 0xacff6b70 (LWP 7781)] [New Thread 0xac5f5b70 (LWP 7782)] [New Thread 0xa929bb70 (LWP 7784)] [New Thread 0xa889ab70 (LWP 7785)] [Thread 0xa889ab70 (LWP 7785) exited] [Thread 0xa929bb70 (LWP 7784) exited] [New Thread 0xa929bb70 (LWP 7786)] [New Thread 0xa889ab70 (LWP 7787)] [New Thread 0xa70ffb70 (LWP 7788)] [Thread 0xa889ab70 (LWP 7787) exited] [Thread 0xa70ffb70 (LWP 7788) exited] [Thread 0xad9f7b70 (LWP 7779) exited] [New Thread 0xad9f7b70 (LWP 7791)] [New Thread 0xa70ffb70 (LWP 7792)] [New Thread 0xa889ab70 (LWP 7793)] [Thread 0xa70ffb70 (LWP 7792) exited] [Thread 0xa889ab70 (LWP 7793) exited] ^C Program received signal SIGINT, Interrupt. 0x00ca4416 in __kernel_vsyscall () (gdb) thread apply all bt
+ Trace 219736
Thread 261 (Thread 0xacff6b70 (LWP 7781))
A trivial GStreamer patch fixes this for me.
Created attachment 150284 [details] [review] don't name the queue used for cdda sources The queue uridecodebin uses for cdda:// URIs is assigned the name "queue". This causes problems when there are multiple uridecodebins in the same pipeline. There's no reason for it to have an explicit name.
I'm wondering why the old queue is still in the pipeline, it sounds like it is leaked.
Commited your patch, then went hunting for leaks and found these: commit 3b0fc1e4fb8caaf203b7af0188a0cbed807fc408 Author: Wim Taymans <wim.taymans@collabora.co.uk> Date: Wed Dec 23 17:08:27 2009 +0100 playbin2: avoid leaking selector request pads commit d4e1ff012d285d055598a4b66570c6a33c08dcaa Author: Wim Taymans <wim.taymans@collabora.co.uk> Date: Wed Dec 23 15:46:25 2009 +0100 uridecodebin: avoid leaking queue and typefind Don't leak the queue and typefind elements that we might link after the source element. commit 138c85117356ad7a558595d168c937461985cad1 Author: Jonathan Matthew <jonathan@d14n.org> Date: Wed Dec 23 15:43:52 2009 +0100 uridecodebin: don't name the queue There is no reason to name the queue. Fixes #605219
*** Bug 578357 has been marked as a duplicate of this bug. ***