GNOME Bugzilla – Bug 344229
segv in e_table_header_draw_button (gtk+ 2.9.2)
Last modified: 2013-09-13 00:53:01 UTC
Backtrace was generated from '/usr/bin/evolution-2.8' Using host libthread_db library "/lib/libthread_db.so.1". `system-supplied DSO at 0xffffe000' has disappeared; keeping its symbols. [Thread debugging using libthread_db enabled] [New Thread -1237161616 (LWP 13594)] [New Thread -1320944736 (LWP 13623)] [New Thread -1312552032 (LWP 13622)] [New Thread -1287373920 (LWP 13619)] [New Thread -1295766624 (LWP 13609)] [New Thread -1278981216 (LWP 13607)] [New Thread -1270588512 (LWP 13604)] [New Thread -1260840032 (LWP 13603)] [New Thread -1252447328 (LWP 13602)] 0xffffe410 in __kernel_vsyscall ()
+ Trace 68719
Generic GNOME 2.15 unstable system (gnome-experimental/bmg on Gentoo). Bug exhibits in gtk+-2.9.2, not gtk+-2.9.1. Diagnosis + patch to follow.
#include <gtk/gtk.h> int main(int argc, char **argv) { gtk_init(&argc, &argv); GtkWidget *button = gtk_button_new_with_label("Hi"); GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); GtkWidget *g_label = GTK_BIN(button)->child; gtk_container_add (GTK_CONTAINER (window), button); gtk_widget_ensure_style (window); gtk_widget_ensure_style (button); gtk_widget_ensure_style (g_label); g_printf("%p\n", g_label->style); } $ gcc $(pkg-config --cflags --libs gtk+-2.0) foo.c Simple program exhibiting bug: $ ./a.out (a.out:21381): Gtk-CRITICAL **: gtk_widget_ensure_style: assertion `GTK_IS_WIDGET (widget)' failed 0xaaaaaaaa With gtk+-2.9.1 or earlier: $ ssh -X nikita ~/a.out 0x8072348 However, this is not a gtk+ bug. Evolution is at fault for poking at the internals of the GtkButton. The reason this bug exhibits is that the label in the button changes during gtk_widget_ensure_style (button); moving the child access to after the gtk_widget_ensure_style call fixes it.
Created attachment 66947 [details] [review] e-table-header-utils.c.patch
Uh, sorry. Severity: happens ~75-90% of the time when starting evolution.
dup of bug 343764?
indeed. thanks again for pointing this out. *** This bug has been marked as a duplicate of 343764 ***