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 739618 - preferences does not load properly
preferences does not load properly
Status: RESOLVED FIXED
Product: eog
Classification: Core
Component: general
3.14.x
Other Linux
: Normal normal
: ---
Assigned To: EOG Maintainers
EOG Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-11-04 14:10 UTC by Dominique Leuenberger
Modified: 2014-11-19 18:27 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Dominique Leuenberger 2014-11-04 14:10:01 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
Comment 1 Felix Riemann 2014-11-10 20:13:31 UTC
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.
Comment 2 Dominique Leuenberger 2014-11-10 22:04:43 UTC
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.
Comment 3 Felix Riemann 2014-11-11 17:44:54 UTC
Oddly --as-needed doesn't have that effect for me (F20/F21 Beta).

Maybe there are additional flags needed to really drop the link.
Comment 4 Felix Riemann 2014-11-19 18:27:53 UTC
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.