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 307804 - [cdio] gst_element_make_from_uri hangs on "cdda://" in totem
[cdio] gst_element_make_from_uri hangs on "cdda://" in totem
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins
git master
Other Linux
: Normal normal
: 0.8.10
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2005-06-15 16:33 UTC by James "Doc" Livingston
Modified: 2005-06-15 16:57 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description James "Doc" Livingston 2005-06-15 16:33:38 UTC
The libcdio plugin (cddasrc) hangs when you try to create it with the uri
"cdda://". The cdparanoia plugin accepts this uri; I think it takes it to mean
"the entire cd", but I'm note sure. Totem uses this to query how many tracks are
on the CD.

To reproduce it:
a) have the libcdio plugin (cddasrc) installed
a) insert an audio cd
b) load totem and attempt to play the disc


When gst_element_make_from_uri is called with the uri "cdda://" it hangs, and
the following debug messages are produced (from debug level 5) repeatedly until
the program is killed.


INFO  (0x810e690 - 310792:08:53.082222000) GST_ELEMENT_FACTORY(29711)
gstelementfactory.c(303):gst_element_factory_create: creating "cddasrc"
LOG   (0x810e690 - 310792:08:53.082324000) GST_REFCOUNTING(29711)
gstobject.c(293):gst_object_replace: replace (NONE) (0) with src (1)
LOG   (0x810e690 - 310792:08:53.082370000) GST_REFCOUNTING(29711)
gstobject.c(226):gst_object_ref:<src> ref 1->2
LOG   (0x810e690 - 310792:08:53.082411000) GST_REFCOUNTING(29711)
gstobject.c(266):gst_object_sink:<src> sink
LOG   (0x810e690 - 310792:08:53.082450000) GST_REFCOUNTING(29711)
gstobject.c(246):gst_object_unref:<src> unref 2->1
DEBUG (0x810e690 - 310792:08:53.082643000)        GST_PADS(29711)
gstpad.c(616):gst_pad_set_get_function: getfunc for '':src  set to 0xb59f8a20
DEBUG (0x810e690 - 310792:08:53.082724000)        GST_PADS(29711)
gstpad.c(635):gst_pad_set_event_function: eventfunc for '':src  set to 0xb59f9bf0
DEBUG (0x810e690 - 310792:08:53.082803000)        GST_PADS(29711)
gstpad.c(654):gst_pad_set_event_mask_function: eventmaskfunc for '':src set to
0xb59f9bd0
DEBUG (0x810e690 - 310792:08:53.082882000)        GST_PADS(29711)
gstpad.c(746):gst_pad_set_query_function: queryfunc for '':src  set to 0xb59f9fe0
DEBUG (0x810e690 - 310792:08:53.082960000)        GST_PADS(29711)
gstpad.c(765):gst_pad_set_query_type_function: querytypefunc for '':src set to
0xb59f9fc0
DEBUG (0x810e690 - 310792:08:53.083040000)        GST_PADS(29711)
gstpad.c(856):gst_pad_set_formats_function: formats function for '':src set to
0xb59f9f40
INFO  (0x810e690 - 310792:08:53.083122000) GST_ELEMENT_PADS(29711)
gstelement.c(1175):gst_element_add_pad:<GstCddaSrc@0x88700a8> adding pad 'src'

LOG   (0x810e690 - 310792:08:53.056215000) GST_REFCOUNTING(29711)
gstobject.c(530):gst_object_set_parent:<'':src> set parent (ref and sink)LOG  
(0x810e690 - 310792:08:53.056257000) GST_REFCOUNTING(29711)
gstobject.c(226):gst_object_ref:<'':src> ref 1->2
LOG   (0x810e690 - 310792:08:53.056297000) GST_REFCOUNTING(29711)
gstobject.c(266):gst_object_sink:<'':src> sink
LOG   (0x810e690 - 310792:08:53.062052000) GST_REFCOUNTING(29711)
gstobject.c(246):gst_object_unref:<'':src> unref 2->1
LOG   (0x810e690 - 310792:08:53.081328000) GST_REFCOUNTING(29711)
gstobject.c(246):gst_object_unref:<cddasrc445> unref 1->0
INFO  (0x810e690 - 310792:08:53.081417000) GST_REFCOUNTING(29711)
gstelement.c(3103):gst_element_dispose:<cddasrc445> dispose
DEBUG (0x810e690 - 310792:08:53.081461000)         default(29711)
gstelement.c(2790):gst_element_set_state:<cddasrc445> setting state to NULL
LOG   (0x810e690 - 310792:08:53.081505000) GST_REFCOUNTING(29711)
gstobject.c(226):gst_object_ref:<cddasrc445> ref 1->2
DEBUG (0x810e690 - 310792:08:53.081547000)      GST_STATES(29711)
gstelement.c(2817):gst_element_set_state_func:<cddasrc445> element is already in
requested state NULL, returning
LOG   (0x810e690 - 310792:08:53.081598000) GST_REFCOUNTING(29711)
gstobject.c(246):gst_object_unref:<cddasrc445> unref 2->1
LOG   (0x810e690 - 310792:08:53.081646000) GST_REFCOUNTING(29711)
gstobject.c(569):gst_object_unparent:<cddasrc445:src> unparent
LOG   (0x810e690 - 310792:08:53.081691000) GST_REFCOUNTING(29711)
gstobject.c(246):gst_object_unref:<'':src> unref 1->0
DEBUG (0x810e690 - 310792:08:53.081732000) GST_REFCOUNTING(29711)
gstpad.c(3047):gst_real_pad_dispose: dispose '':src
LOG   (0x810e690 - 310792:08:53.081775000) GST_REFCOUNTING(29711)
gstobject.c(293):gst_object_replace: replace src (1) with (NONE) (0)
LOG   (0x810e690 - 310792:08:53.081818000) GST_REFCOUNTING(29711)
gstobject.c(246):gst_object_unref:<src> unref 1->0
LOG   (0x810e690 - 310792:08:53.081870000) GST_REFCOUNTING(29711)
gstobject.c(308):gst_object_dispose:<src> dispose
LOG   (0x810e690 - 310792:08:53.081912000) GST_REFCOUNTING(29711)
gstobject.c(322):gst_object_finalize:<src> finalize
LOG   (0x810e690 - 310792:08:53.081958000) GST_REFCOUNTING(29711)
gstobject.c(308):gst_object_dispose:<'':src> dispose
LOG   (0x810e690 - 310792:08:53.081999000) GST_REFCOUNTING(29711)
gstobject.c(322):gst_object_finalize:<'':src> finalize
LOG   (0x810e690 - 310792:08:53.082041000) GST_REFCOUNTING(29711)
gstobject.c(293):gst_object_replace: replace (NONE) (0) with (NONE) (0)
LOG   (0x810e690 - 310792:08:53.082083000) GST_REFCOUNTING(29711)
gstobject.c(293):gst_object_replace: replace (NONE) (0) with (NONE) (0)
LOG   (0x810e690 - 310792:08:53.082126000) GST_REFCOUNTING(29711)
gstobject.c(308):gst_object_dispose:<cddasrc445> dispose
LOG   (0x810e690 - 310792:08:53.082176000) GST_REFCOUNTING(29711)
gstobject.c(322):gst_object_finalize:<cddasrc445> finalize
Comment 1 Tim-Philipp Müller 2005-06-15 16:57:07 UTC
Should be fixed in CVS now. The endless loop creating/destroying the element
might be a bug in totem though, not sure.

2005-06-15  Tim-Philipp Muller  <tim at centricular dot net>

        * ext/cdio/cddasrc.c: (cddasrc_uri_set_uri):
          Default to cdda://1 when called with empty URI (cdda://)
          like when called from gst_element_make_from_uri(). We need
          to return TRUE in the set_uri() function if we can handle
          the protocol but don't know whether the track number
          is valid yet. (fixes #307804)

Cheers
 -Tim