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 756338 - applications segfaults on 3.18.1 when using external themes
applications segfaults on 3.18.1 when using external themes
Status: RESOLVED FIXED
Product: gtk+
Classification: Platform
Component: Themes
3.18.x
Other Linux
: Normal normal
: ---
Assigned To: gtk-bugs
gtk-bugs
: 756508 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2015-10-10 10:42 UTC by Yves-Alexis Perez
Modified: 2015-10-14 10:34 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
minimal reproducer (970 bytes, text/plain)
2015-10-10 13:00 UTC, Timm Bäder
Details

Description Yves-Alexis Perez 2015-10-10 10:42:19 UTC
Hi,

starting with 3.18, using evolution with Greybird theme leads to segfault.

The downstream bug is at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=800911

Switching to Adwaita leads to no segfault, so I assume something changed in theme handling, breaking the API, intentionaly or not.

The Greybird theme can be found at https://github.com/shimmerproject/Greybird

Here's the backtrace (I've dropped the debubgging symbols for evolution and evolution-data-server because I assume they're not relevant but please ask if they are).

Program terminated with signal SIGSEGV, Segmentation fault.
  • #0 gtk_style_context_get_style_valist
    at /build/gtk+3.0-IyTWPl/gtk+3.0-3.18.1/./gtk/gtkstylecontext.c line 1873
  • #0 gtk_style_context_get_style_valist
    at /build/gtk+3.0-IyTWPl/gtk+3.0-3.18.1/./gtk/gtkstylecontext.c line 1873
  • #1 gtk_style_context_get_style
    at /build/gtk+3.0-IyTWPl/gtk+3.0-3.18.1/./gtk/gtkstylecontext.c line 1908
  • #2 e_web_view_update_fonts
    from /usr/lib/evolution/libevolution-util.so.0
  • #3 ??
    from /usr/lib/evolution/libevolution-util.so.0
  • #4 g_type_create_instance
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #5 ??
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #6 g_object_new_valist
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #7 g_object_new
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #8 ??
    from /usr/lib/evolution/libevolution-mail.so.0
  • #9 ??
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #10 g_object_new_valist
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #11 g_object_new
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #12 ??
    from /usr/lib/evolution/modules/module-mail.so
  • #13 ??
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #14 g_object_new_valist
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #15 g_object_new
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #16 ??
    from /usr/lib/evolution/libevolution-shell.so.0
  • #17 ??
    from /usr/lib/evolution/modules/module-mail.so
  • #18 ??
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #19 g_object_new_valist
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #20 g_object_new
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #21 ??
    from /usr/lib/evolution/libevolution-shell.so.0
  • #22 e_shell_window_get_shell_view
    from /usr/lib/evolution/libevolution-shell.so.0
  • #23 e_shell_window_set_active_view
    from /usr/lib/evolution/libevolution-shell.so.0
  • #24 ??
    from /usr/lib/evolution/libevolution-shell.so.0
  • #25 g_object_set_property
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #26 ??
    from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
  • #27 g_settings_bind_with_mapping
    from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
  • #28 g_settings_bind
    from /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0
  • #29 e_shell_window_private_constructed
    from /usr/lib/evolution/libevolution-shell.so.0
  • #30 ??
    from /usr/lib/evolution/libevolution-shell.so.0
  • #31 ??
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #32 g_object_new_valist
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #33 g_object_new
    from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
  • #34 e_shell_window_new
    from /usr/lib/evolution/libevolution-shell.so.0
  • #35 e_shell_create_shell_window
    from /usr/lib/evolution/libevolution-shell.so.0
  • #36 _start

Comment 1 Yves-Alexis Perez 2015-10-10 12:25:44 UTC
I was asked to provide a backtrace from a run with G_DEBUG="fatal-criticals" so here it is:


  • #0 g_logv
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./glib/gmessages.c line 324
  • #1 g_logv
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./glib/gmessages.c line 1081
  • #2 g_log
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./glib/gmessages.c line 1119
  • #3 g_return_if_fail_warning
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./glib/gmessages.c line 1128
  • #4 g_value_set_boxed
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gboxed.c line 490
  • #5 _gtk_style_context_peek_style_property
    at /build/gtk+3.0-IyTWPl/gtk+3.0-3.18.1/./gtk/gtkstylecontext.c line 1683
  • #6 gtk_style_context_get_style_valist
    at /build/gtk+3.0-IyTWPl/gtk+3.0-3.18.1/./gtk/gtkstylecontext.c line 1871
  • #7 gtk_style_context_get_style
    at /build/gtk+3.0-IyTWPl/gtk+3.0-3.18.1/./gtk/gtkstylecontext.c line 1908
  • #8 e_web_view_update_fonts
  • #9 0x000003787b9b89c7 in
  • #10 g_type_create_instance
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gtype.c line 1864
  • #11 g_object_new_internal
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 1779
  • #12 g_object_new_valist
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 2038
  • #13 g_object_new
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 1622
  • #14 0x000003780ab3c9bb in
  • #15 g_object_new_internal
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 1819
  • #16 g_object_new_valist
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 2038
  • #17 g_object_new
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 1622
  • #18 0x00000377fe63846d in
  • #19 g_object_new_internal
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 1819
  • #20 g_object_new_valist
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 2038
  • #21 g_object_new
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 1622
  • #22 0x000003787bc8a48f in
  • #23 0x00000377fe63b0fb in
  • #24 g_object_new_internal
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 1819
  • #25 g_object_new_valist
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 2038
  • #26 g_object_new
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 1622
  • #27 0x000003787bc8cdd4 in
  • #28 e_shell_window_get_shell_view
  • #29 e_shell_window_set_active_view
  • #30 0x000003787bc8e086 in
  • #31 g_object_set_property
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 1420
  • #32 g_object_set_property
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 2367
  • #33 g_settings_binding_key_changed
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gio/gsettings.c line 2550
  • #34 g_settings_bind_with_mapping
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gio/gsettings.c line 2847
  • #35 g_settings_bind
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gio/gsettings.c line 2675
  • #36 e_shell_window_private_constructed
  • #37 0x000003787bc8c16c in
  • #38 g_object_new_internal
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 1819
  • #39 g_object_new_valist
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 2038
  • #40 g_object_new
    at /build/glib2.0-BMd9vh/glib2.0-2.46.0/./gobject/gobject.c line 1622
  • #41 e_shell_window_new
  • #42 e_shell_create_shell_window
  • #43 _start

Comment 2 Yves-Alexis Perez 2015-10-10 12:40:40 UTC
The backtrace shows:

prop_name = 0x3787b9dfb65 "link-color"

which is indeed present in Greybird, but apparently not in Adwaita. That would explain why the assertion is not triggered there.
Comment 3 Timm Bäder 2015-10-10 13:00:58 UTC
Created attachment 313020 [details]
minimal reproducer

The problem here is the combination of a style property with a symbolic color.
Comment 4 Yves-Alexis Perez 2015-10-10 14:01:21 UTC
And where is the problem lying then? In GTK+ or in the themes?
Comment 5 Timm Bäder 2015-10-10 14:04:16 UTC
It's a regression in gtk+
Comment 6 Andreas Henriksson 2015-10-10 15:15:39 UTC
git bisect told me:

3e5280ae4dfd1950dbd56a781dcdcf34a26d4294 is the first bad commit
commit 3e5280ae4dfd1950dbd56a781dcdcf34a26d4294
Author: Benjamin Otte <otte@redhat.com>
Date:   Mon Apr 27 19:15:43 2015 +0200

    stylecontext: Clear style property more frequently
    
    We want to clear the style property cache whenever things change in the
    tree, not as we previously did only when those changes actually lead to
    a different CSS style.
Comment 8 Milan Crha 2015-10-14 10:34:55 UTC
*** Bug 756508 has been marked as a duplicate of this bug. ***