GNOME Bugzilla – Bug 739618
preferences does not load properly
Last modified: 2014-11-19 18:27:53 UTC
This is probably something a bit more specific to openSUSE, where I see this. Others have confirmed the same working on F21. It is, thus, likely some dependency that is not specific somewhere that is causing this weird behavior. In short: launching preferences in eog results in a window with only two buttons: help and close (which do not work; one has to hit ESC to close the window). While launching preferences, I can see this errors on the console Gtk-CRITICAL **: Error building template class 'EogPreferencesDialog' for an instance of type 'EogPreferencesDialog': Invalid object type `PeasGtkPluginManager' on line 3 (eog:7294): GLib-GIO-CRITICAL **: g_settings_bind_with_mapping: assertion 'G_IS_OBJECT (object)' failed (eog:7294): GLib-GIO-CRITICAL **: g_settings_bind_with_mapping: assertion 'G_IS_OBJECT (object)' failed (eog:7294): GLib-GIO-CRITICAL **: g_settings_bind_with_mapping: assertion 'G_IS_OBJECT (object)' failed (eog:7294): GLib-GIO-CRITICAL **: g_settings_bind_with_mapping: assertion 'G_IS_OBJECT (object)' failed (eog:7294): GLib-GIO-CRITICAL **: g_settings_bind_with_mapping: assertion 'G_IS_OBJECT (object)' failed (eog:7294): GLib-GObject-CRITICAL **: g_object_set_data: assertion 'G_IS_OBJECT (object)' failed (eog:7294): GLib-GObject-WARNING **: invalid (NULL) pointer instance (eog:7294): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed (eog:7294): GLib-GObject-CRITICAL **: g_object_set_data: assertion 'G_IS_OBJECT (object)' failed (eog:7294): GLib-GObject-WARNING **: invalid (NULL) pointer instance (eog:7294): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed (eog:7294): GLib-GObject-CRITICAL **: g_object_set_data: assertion 'G_IS_OBJECT (object)' failed (eog:7294): GLib-GObject-WARNING **: invalid (NULL) pointer instance (eog:7294): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed (eog:7294): GLib-GObject-WARNING **: invalid (NULL) pointer instance (eog:7294): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed (eog:7294): Gtk-CRITICAL **: gtk_toggle_button_set_active: assertion 'GTK_IS_TOGGLE_BUTTON (toggle_button)' failed (eog:7294): GLib-GIO-CRITICAL **: g_settings_bind_with_mapping: assertion 'G_IS_OBJECT (object)' failed (eog:7294): GLib-GIO-CRITICAL **: g_settings_bind_with_mapping: assertion 'G_IS_OBJECT (object)' failed (eog:7294): GLib-GIO-CRITICAL **: g_settings_bind_with_mapping: assertion 'G_IS_OBJECT (object)' failed (eog:7294): Gtk-CRITICAL **: gtk_range_get_adjustment: assertion 'GTK_IS_RANGE (range)' failed (eog:7294): GLib-GIO-CRITICAL **: g_settings_bind_with_mapping: assertion 'G_IS_OBJECT (object)' failed (eog:7294): Gtk-CRITICAL **: gtk_widget_show_all: assertion 'GTK_IS_WIDGET (widget)' failed
I tried a bit in a VM and the difference between F21 and openSUSE 13.2 seems to be that eog on SUSE doesn't link to libpeas-gtk directly (as in visible when using ldd) and thus has problems resolving the PeasGtkPluginManager type when it is needed. On Fedora it loads libpeas-gtk right from the beginning and then GTK+ has no problems resolving peas_gtk_plugin_manager_get_type() when opening the preferences dialog.
Felix, Nice catch; indeed, in openSUSE, all packages are built with -Wl,--as-needed, which strips out libraries which are not actually used (no symbols used of a library). Checking the code, there seems to be a header included of libpeas-gtk in src/eog-preferences-dialog.c. This commiet https://git.gnome.org/browse/eog/commit/src/eog-preferences-dialog.c?id=f96947cf5749a78cdd3848ed8bc5e7bfe883d0b0 dropped the last code reference to any actual code coming from those headers, which results now in as-needed triggering the removal.
Oddly --as-needed doesn't have that effect for me (F20/F21 Beta). Maybe there are additional flags needed to really drop the link.
Found a fix for the problem in the gedit project. This fix causes a reference to libpeas-gtk and should keep the link dependency that way. commit 46c38b71222b79f711983164a41a4e9d03283016 Author: Felix Riemann <> Date: Wed Nov 19 19:20:03 2014 +0100 Make sure the libpeas-gtk dependency isn't optimized away Aggressive linkers could drop the dependency which would cause problems using during runtime. Based on a patch for the same problem for gedit by Garret Regier. https://bugzilla.gnome.org/show_bug.cgi?id=739618 --- This problem has been fixed in our software repository. The fix will go into the next software release. Thank you for your bug report.