GNOME Bugzilla – Bug 330637
Gst makes application crash when loading .asx files
Last modified: 2008-06-03 17:39:25 UTC
Please describe the problem: Whenever I try to load an internet radio station Gstreamer makes the application freeze, be it totem or rhythmbox. Steps to reproduce: 1. open totem or rhythmbox 2. load http://www.ondacero.es/europafm.asx 3. watch the app crash Actual results: Expected results: I would like the application to actually play the radio station Does this happen every time? yes Other information:
I could reproduce the bug, the issue is actually that if you feed a bogus link into 'open location' Totem crashes. Doing http://www.fluendo.com/dontexist.asx gave me same result. Re-assigning to Totem.
It happens on rhythmbox too, and I seem to remember the rhythmbox devs told me it as because od Gst. On top of that, with earlier versions of totem I could listen to the stations if I used the xine backend instead of Gst.
$ ./test-parser http://www.fluendo.com/dontexist.asx ###################### parsing ################ added URI 'http://www.fluendo.com/dontexist.asx' with title 'empty' genre '(null)' And the xine-lib backend will error: Totem could not play 'http://www.fluendo.com/dontexist.asx'. There is no input plugin to handle the location of this movie Make sure you have a recent version of Totem and its playlist parser. If it still crashes, it's probably a GStreamer crash. A backtrace would help...
Here is the bt I am getting: (gdb) thread apply all bt
+ Trace 66058
Thread 1 (Thread -1208342864 (LWP 2775))
With GST_DEBUG it seems the only relevant message is: (totem:2816): GLib-CRITICAL **: g_str_has_prefix: assertion `str != NULL' failed
Sounds like a SIG33, not a segfault you're seeing. Add those lines to your ~/.gdbinit: handle SIG33 nostop handle SIG33 pass
Jan/Thaytan said he was able to see the problem with this backtrace (gdb) bt
+ Trace 66073
$1 = 0x0 (gdb) list 1708 1703 1704 parser->priv->recurse_level--; 1705 1706 if (ret == TOTEM_PL_PARSER_RESULT_SUCCESS) 1707 return ret; 1708 1709 super = gnome_vfs_get_supertype_from_mime_type (mimetype); 1710 for (i = 0; i < G_N_ELEMENTS (ignore_types); i++) { 1711 if (gnome_vfs_mime_type_is_supertype (ignore_types[i].mimetype) != FALSE) { 1712 if (strcmp (super, ignore_types[i].mimetype) == 0) { (gdb) 1713 g_free (super); 1714 return TOTEM_PL_PARSER_RESULT_IGNORED; 1715 } 1716 } else { 1717 GnomeVFSMimeEquivalence eq; 1718 1719 eq = gnome_vfs_mime_type_get_equivalence (mimetype, ignore_types[i].mimetype); 1720 if (eq == GNOME_VFS_MIME_PARENT || eq == GNOME_VFS_MIME_IDENTICAL) { 1721 g_free (super); 1722 return TOTEM_PL_PARSER_RESULT_IGNORED; (gdb) print mimetype $2 = 0x0 (gdb) list 1700 1695 mimetype = my_gnome_vfs_get_mime_type_with_data (url, &data); 1696 } 1697 ret = (* dual_types[i].func) (parser, url, data); 1698 break; 1699 } 1700 } 1701 1702 g_free (data); 1703 1704 parser->priv->recurse_level--; (gdb) print url $3 = 0x8371f08 "http://www.fluendo.com/binbong.asx" (gdb) $4 = 0x8371f08 "http://www.fluendo.com/binbong.asx" (gdb)
I already fixed that bug the other day. *** This bug has been marked as a duplicate of 330120 ***
Mass-move from totem to totem-pl-parser. You can remove all messages by searching for this comment.