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 605219 - Freezes nearly always when switching Audio CDs
Freezes nearly always when switching Audio CDs
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal critical
: 0.10.26
Assigned To: GStreamer Maintainers
GStreamer Maintainers
: 578357 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2009-12-22 13:24 UTC by André Klapper
Modified: 2009-12-29 11:57 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
don't name the queue used for cdda sources (630 bytes, patch)
2009-12-23 11:32 UTC, Jonathan Matthew
none Details | Review

Description André Klapper 2009-12-22 13:24:28 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

Thread 261 (Thread 0xacff6b70 (LWP 7781))

  • #0 filter_next
    at gstiterator.c line 432
  • #1 gst_iterator_next
    at gstiterator.c line 306
  • #2 gst_iterator_fold
    at gstiterator.c line 541
  • #3 gst_bin_query
    at gstbin.c line 3502
  • #4 gst_element_query
    at gstelement.c line 1614
  • #5 gst_bin_do_latency_func
    at gstbin.c line 2278
  • #6 gst_marshal_BOOLEAN__VOID
    at gstmarshal.c line 546
  • #7 g_type_class_meta_marshal
    at gclosure.c line 878
  • #8 IA__g_closure_invoke
    at gclosure.c line 767
  • #9 signal_emit_unlocked_R
    at gsignal.c line 3285
  • #10 IA__g_signal_emit_valist
    at gsignal.c line 2990
  • #11 IA__g_signal_emit
    at gsignal.c line 3037
  • #12 gst_bin_recalculate_latency
    at gstbin.c line 2257
  • #13 gst_bin_change_state_func
    at gstbin.c line 2351
  • #14 gst_pipeline_change_state
    at gstpipeline.c line 464
  • #15 gst_play_bin_change_state
    at gstplaybin2.c line 3034
  • #16 gst_element_change_state
    at gstelement.c line 2548
  • #17 gst_bin_continue_func
    at gstbin.c line 2639
  • #18 g_thread_pool_thread_proxy
    at gthreadpool.c line 265
  • #19 g_thread_create_proxy
    at gthread.c line 635
  • #20 start_thread
    at pthread_create.c line 297
  • #21 clone
    at ../sysdeps/unix/sysv/linux/i386/clone.S line 130

Comment 1 Jonathan Matthew 2009-12-23 11:29:15 UTC
A trivial GStreamer patch fixes this for me.
Comment 2 Jonathan Matthew 2009-12-23 11:32:13 UTC
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.
Comment 3 Wim Taymans 2009-12-23 13:57:52 UTC
I'm wondering why the old queue is still in the pipeline, it sounds like it is leaked.
Comment 4 Wim Taymans 2009-12-23 20:26:17 UTC
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
Comment 5 André Klapper 2009-12-29 11:57:07 UTC
*** Bug 578357 has been marked as a duplicate of this bug. ***