fossfreedom / coverart-browser

Browse your cover-art albums in Rhythmbox v2.96 - 3.0+
http://xpressubuntu.wordpress.com/
GNU General Public License v3.0
74 stars 19 forks source link

SIGSEGV on openSUSE 12.3 #188

Closed Skeletonix closed 11 years ago

Skeletonix commented 11 years ago

Hello,

I installed Covert Art plugin on my openSuse 12.3 and Rhythmbox crash with sigsegv, I didn't have the troubles on openSuse 12.2.

I tried to run Rhythmbox with the debug option and this is the result:

 (17:40:44) [0x18b1cf0] [rb_shell_select_page] rb-shell.c:2552: selecting page 0x2c69000
(17:40:44) [0x18b1cf0] [CoverArtBrowserSource.do_selected] .local/share/rhythmbox/plugins/coverart_browser/coverart_browser_source.py:243: CoverArtBrowser DEBUG - do_selected
(17:40:44) [0x18b1cf0] [CoverArtBrowserSource.do_impl_activate] .local/share/rhythmbox/plugins/coverart_browser/coverart_browser_source.py:276: CoverArtBrowser DEBUG - do_impl_activate
(17:40:44) [0x18b1cf0] [CoverArtBrowserSource._create_ui] .local/share/rhythmbox/plugins/coverart_browser/coverart_browser_source.py:347: CoverArtBrowser DEBUG - _create_ui
(17:40:44) [0x18b1cf0] [find_plugin_file] /usr/lib64/rhythmbox/plugins/rb/rb.py:140: looking for ui/coverart_browser.ui in /home/binturong/.local/share/rhythmbox/plugins/coverart_browser
(17:40:44) [0x18b1cf0] [CoverArtBrowserSource._create_ui] .local/share/rhythmbox/plugins/coverart_browser/coverart_browser_source.py:394: CoverArtBrowser DEBUG - end _create_ui
(17:40:44) [0x18b1cf0] [CoverArtBrowserSource._setup_source] .local/share/rhythmbox/plugins/coverart_browser/coverart_browser_source.py:455: CoverArtBrowser DEBUG - _setup_source
(17:40:44) [0x18b1cf0] [rhythmdb_query_model_chain] rhythmdb-query-model.c:896: query model 0x2fa31b0 chaining to base model (nil)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x32f7950 (title: Stopa, key: Track)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x32f7bf0 (title: Název, key: Title)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x32f7e90 (title: Žánr, key: Genre)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x32fe1e0 (title: Umělec, key: Artist)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x32fe480 (title: Album, key: Album)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x3303070 (title: Čas, key: Time)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x3303310 (title: Komentář, key: Comment)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x33035b0 (title: Hodnocení, key: Rating)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x3306900 (title: Kvalita, key: Quality)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x3306ba0 (title: Počet přehrání, key: PlayCount)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x3306e40 (title: Naposledy přehrané, key: LastPlayed)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x330b220 (title: Rok, key: Year)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x330b4c0 (title: Datum přidání, key: FirstSeen)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x33100b0 (title: Umístění, key: Location)
(17:40:44) [0x18b1cf0] [rb_entry_view_insert_column_custom] rb-entry-view.c:1716: appending column: 0x3310350 (title: Tempo, key: BPM)
(17:40:44) [0x18b1cf0] [find_plugin_file] /usr/lib64/rhythmbox/plugins/rb/rb.py:140: looking for ui/coverart_entryview.ui in /home/binturong/.local/share/rhythmbox/plugins/coverart_browser
(17:40:44) [0x18b1cf0] [CoverArtEntryView.on_visible_columns_changed] .local/share/rhythmbox/plugins/coverart_browser/coverart_entryview.py:241: CoverArtBrowser DEBUG - on_visible_columns_changed()
Neoprávněný přístup do paměti (SIGSEGV)

Do you have an idea what could be wrong?

fossfreedom commented 11 years ago

do you still want help on this? If you are using RB2.99 then you'll need to install the "unstable" master version since this has RB2.99 support. release 0.8 is for RB 2.96 - 2.98 only. Please see the README file for more info.

EDIT - is this still a reoccurance of this issue you raised previously? https://github.com/fossfreedom/coverart-browser/issues/164

Skeletonix commented 11 years ago

Help would be great (I really like the plugin).

I have Rhythmbox version 2.98 (http://software.opensuse.org/package/rhythmbox?search_term=rhythmbox), so there shouldn´t be a problem. Actually I tried the RB2.99 version of the plugin, but it didn´t work neither. Is there only one version of the covert-search-plugin or it is necessary to use unstable cover-art-browser ad unstable cover-search-plugin together?

Yes, it is the same issue as #164. I moved to openSuse 12.3 week ago and the problem occurred again. I don´t have the problem on 12.2.

fossfreedom commented 11 years ago

I downloaded 12.3 last night but am struggling at the moment to get it to recognise my CD drive. I'll let you know if I can reproduce your issue once I figure out how to mount an opensuse CD drive from the terminal.

fossfreedom commented 11 years ago

@Skeletonix - ok, some notes:

If I add the BPM column then the plugin crashes. If I use the preferences and just have the default columns ticked (default columns: track number artist album time genre) then all is ok.

I have also noted that with the plugin enabled & you see the cover icons, when you choose preferences again then you get another seg fault.

This all points to an internal rhythmbox memory corruption issue. I'll continue looking to see if I see anything else.

fossfreedom commented 11 years ago

@Skeletonix - this is a rhythmbox bug caused by the BPM column being enabled in the preferences. I'll file a bug-report on bugzilla soon.

I've coded around this for now - basically we dont display BPM in the track-view anymore.

Please git clone coverart-browser again and reinstall. This should resolve this.

Please let me know how you get on.

Skeletonix commented 11 years ago

Great, it works li a charm. Thank you a lot for the help.

Skeletonix commented 11 years ago

ouch, I was too fast. RB starts without SIGSEGV, but when try to play a song or enter the settings menu the RB crash:

(rhythmbox:8128): GLib-GObject-WARNING **: specified class size for type `GstPulseSrc' is smaller than the parent type's `GstAudioSrc' class size

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(rhythmbox:8128): GLib-CRITICAL **: g_once_init_leave: assertion `result != 0' failed

(rhythmbox:8128): GStreamer-CRITICAL **: gst_element_register: assertion `g_type_is_a (type, GST_TYPE_ELEMENT)' failed
Cannot connect to server socket err = Adresář nebo soubor neexistuje
Cannot connect to server socket
jack server is not running or cannot be started

(rhythmbox:8128): GLib-GObject-WARNING **: specified class size for type `GstAlsaSrc' is smaller than the parent type's `GstAudioSrc' class size

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(rhythmbox:8128): GLib-CRITICAL **: g_once_init_leave: assertion `result != 0' failed

(rhythmbox:8128): GStreamer-CRITICAL **: gst_element_register: assertion `g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(rhythmbox:8128): GLib-GObject-WARNING **: specified class size for type `GstOss4Sink' is smaller than the parent type's `GstAudioSink' class size

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(rhythmbox:8128): GLib-CRITICAL **: g_once_init_leave: assertion `result != 0' failed

(rhythmbox:8128): GStreamer-CRITICAL **: gst_element_register: assertion `g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(rhythmbox:8128): GLib-GObject-WARNING **: specified class size for type `GstOssSrc' is smaller than the parent type's `GstAudioSrc' class size

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion `G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(rhythmbox:8128): GLib-CRITICAL **: g_once_init_leave: assertion `result != 0' failed

(rhythmbox:8128): GStreamer-CRITICAL **: gst_element_register: assertion `g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(rhythmbox:8128): GLib-GObject-WARNING **: specified class size for type `GstOpenALSink' is smaller than the parent type's `GstAudioSink' class size

(rhythmbox:8128): GLib-CRITICAL **: g_once_init_leave: assertion `result != 0' failed

(rhythmbox:8128): GStreamer-CRITICAL **: gst_element_register: assertion `g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(rhythmbox:8128): GLib-GObject-WARNING **: specified class size for type `GstEsdSink' is smaller than the parent type's `GstAudioSink' class size

(rhythmbox:8128): GLib-CRITICAL **: g_once_init_leave: assertion `result != 0' failed

(rhythmbox:8128): GStreamer-CRITICAL **: gst_element_register: assertion `g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(rhythmbox:8128): GLib-GObject-WARNING **: cannot register existing type `GstAudioClock'

(rhythmbox:8128): GLib-CRITICAL **: g_once_init_leave: assertion `result != 0' failed

(rhythmbox:8128): GLib-GObject-CRITICAL **: g_object_new: assertion `G_TYPE_IS_OBJECT (object_type)' failed
Neoprávněný přístup do paměti (SIGSEGV)
asermax commented 11 years ago

That seems to be a GStreamer issue, at least for what the error shows.

Skeletonix commented 11 years ago

It works properly when I delete the cover art browser plugin.

fossfreedom commented 11 years ago

your error looks very much like this ArchLinux issue

There seems to be a mismatch on opensuse with the version of webkit and rhythmbox.

I'll have a look at this tonight/tomorrow.

fossfreedom commented 11 years ago

@Skeletonix

https://bugs.mageia.org/show_bug.cgi?id=7688

From the magia link this is your issue:

"Webkit-1.0 pulls gtk-2, and webkit-3.0 pull gst-1.0. Probaly temporary solution is to disable webkit in RB until it can build with gst-1.0...."

The resolution the magia guys did was:

"Easy, we could build webkit-3.0 with gst-0.10."

Basically opensuse has built webkit-3.0 with the wrong version of gstreamer

fossfreedom commented 11 years ago

@Skeletonix -

I have updated the README file to show what the workaround is.

Please can you try this. Thanks.

Skeletonix commented 11 years ago

Thank you, it works (without the cover search) :-). It means, that there is bug in the openSuse Rhythmbox package?

fossfreedom commented 11 years ago

Thanks.

No - Rhythmbox 2.98 uses gstreamer version 0.11. So this is correctly compiled.

For whatever reason - the webkit package is compiled & linked to gstreamer version 1.0.

Because coverart-browser uses webkit for the cover search, when our plugin is activated, webkit loads the gstreamer 1.0 libraries. Rhythmbox gets confused - it attempts to use the gstreamer 1.0 libraries and obviously fails with a crash.

Rhythmbox version "3.0" which is currently being developed (not yet released), has been updated to use gstreamer 1.0. So this version will be compatible with the current opensuse webkit package.

As I said - the Magia distro guys also found this issue - they recognised the issue, and instead compiled webkit to use gstreamer 0.11. Thus, there is no conflict with rhythmbox.

You could also do this yourself :)

Anyway, I'll close this now. Glad that the code fixes and workaround works for you.