GNOME Bugzilla – Bug 307804
[cdio] gst_element_make_from_uri hangs on "cdda://" in totem
Last modified: 2005-06-15 16:57:07 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
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