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 343764 - Crash during evolution startup after updating to CVS HEAD
Crash during evolution startup after updating to CVS HEAD
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: general
2.8.x
Other Linux
: High critical
: ---
Assigned To: Harish Krishnaswamy
Evolution QA team
: 344229 344268 344277 344618 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2006-06-03 12:16 UTC by Diego González
Modified: 2013-09-13 00:53 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
A patch (1.67 KB, patch)
2006-06-08 10:43 UTC, Carlos Garcia Campos
committed Details | Review
e-table-header-utils.c.patch (389 bytes, patch)
2006-06-09 08:20 UTC, Ed Catmur
committed Details | Review

Description Diego González 2006-06-03 12:16:17 UTC
this is what i get on the console:

Gtk-CRITICAL **: gtk_widget_ensure_style: assertion `GTK_IS_WIDGET (widget)' failed
aborting...

this is the backtrace, i don't know if it will be useful enough:

  • #0 __kernel_vsyscall
  • #1 raise
    from /lib/tls/i686/cmov/libc.so.6
  • #2 abort
    from /lib/tls/i686/cmov/libc.so.6
  • #3 IA__g_logv
    at gmessages.c line 497
  • #4 IA__g_log
    at gmessages.c line 517
  • #5 IA__g_return_if_fail_warning
  • #6 IA__gtk_widget_ensure_style
    at gtkwidget.c line 4782
  • #7 e_table_header_draw_button
    from /opt/gnome2/lib/evolution/2.8/libetable.so.0
  • #8 ??
  • #9 ??

Note that it might not be a real crash, it might be due to the fact that gnome from CVS is aborting on GTK-CRiticals.
Comment 1 Elijah Newren 2006-06-03 16:17:25 UTC
If gtk_widget_ensure_style gets a critical warning due to being passed a bad widget, it looks like evo is at fault for passing the bad widget.  Could you get a stack trace with debugging symbols?  Please see http://live.gnome.org/GettingTraces for more information on how to do so.
Comment 2 Diego González 2006-06-03 17:00:46 UTC
how can it be? the only thing i changed is GTK+ and now evolution is crashing it is not very logical to think that evolution is at fault here. I will recompile evolution with debugging symbols, anyway.
Comment 3 Elijah Newren 2006-06-03 17:20:33 UTC
Well, you didn't state that you only updated gtk+ in your original comment.  ;-)  However, it appears that gtk_widget_ensure_style() hasn't changed since gtk+-2.1.x or so, so it does seem unlikely to be a problem there.  Note that critical warnings only become crashers if G_DEBUG is set appropriately, so perhaps you didn't reinitialize your environment after the last time you updated gnome-session (i.e. logged out and then back in) until recently.  It's also possible that you used evolution a little bit differently, or that it's threading and timing just happened to take you down a different path this time.

So, it might still be a gtk+ bug, but even if it is we'd need a better stack trace as the first line of gtk_widget_ensure_style() is and has been g_return_if_fail (GTK_IS_WIDGET (widget)) -- something that would only fail if evo passed bad data.
Comment 4 Diego González 2006-06-04 02:00:26 UTC
ok, here is the whole backtrace:

  • #0 __kernel_vsyscall
  • #1 raise
    from /lib/tls/i686/cmov/libc.so.6
  • #2 abort
    from /lib/tls/i686/cmov/libc.so.6
  • #3 IA__g_logv
    at gmessages.c line 497
  • #4 IA__g_log
    at gmessages.c line 517
  • #5 IA__g_return_if_fail_warning
  • #6 IA__gtk_widget_ensure_style
    at gtkwidget.c line 4782
  • #7 e_table_header_draw_button
    at e-table-header-utils.c line 354
  • #8 ethi_draw
    at e-table-header-item.c line 1014
  • #9 gnome_canvas_group_get_type
  • #10 gnome_canvas_new_aa
    from /opt/gnome2/lib/libgnomecanvas-2.so.0
  • #11 gnome_canvas_new_aa
    from /opt/gnome2/lib/libgnomecanvas-2.so.0
  • #12 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 83
  • #13 g_type_class_meta_marshal
    at gclosure.c line 567
  • #14 IA__g_closure_invoke
    at gclosure.c line 490
  • #15 signal_emit_unlocked_R
    at gsignal.c line 2476
  • #16 IA__g_signal_emit_valist
    at gsignal.c line 2207
  • #17 IA__g_signal_emit
    at gsignal.c line 2241
  • #18 gtk_widget_event_internal
    at gtkwidget.c line 3901
  • #19 IA__gtk_widget_send_expose
    at gtkwidget.c line 3738
  • #20 gnome_canvas_new_aa
    from /opt/gnome2/lib/libgnomecanvas-2.so.0
  • #21 gnome_canvas_new_aa
    from /opt/gnome2/lib/libgnomecanvas-2.so.0
  • #22 gnome_canvas_new_aa
    from /opt/gnome2/lib/libgnomecanvas-2.so.0
  • #23 g_idle_dispatch
    at gmain.c line 3796
  • #24 g_main_dispatch
    at gmain.c line 1916
  • #25 IA__g_main_context_dispatch
    at gmain.c line 2466
  • #26 g_main_context_iterate
    at gmain.c line 2547
  • #27 IA__g_main_loop_run
    at gmain.c line 2751
  • #28 bonobo_main
    from /opt/gnome2/lib/libbonobo-2.so.0
  • #29 ??

if you need the gnome-canvas library with debug info tell me and i'll generate a new backtrace.
Thanks very much
Comment 5 Claudio Saavedra 2006-06-06 09:57:12 UTC
Confirming. Same backtrace, updated as of last night:

Thread 1 (Thread -1501514048 (LWP 25189))

  • #0 __kernel_vsyscall
  • #1 __waitpid_nocancel
    from /lib/tls/i686/cmov/libpthread.so.0
  • #2 libgnomeui_segv_handle
    at gnome-ui-init.c line 812
  • #3 <signal handler called>
  • #4 e_table_header_draw_button
    at e-table-header-utils.c line 357
  • #5 ethi_draw
    at e-table-header-item.c line 1014
  • #6 gnome_canvas_group_draw
    at gnome-canvas.c line 1680
  • #7 gnome_canvas_expose
    at gnome-canvas.c line 2992
  • #8 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 83
  • #9 g_type_class_meta_marshal
    at gclosure.c line 567
  • #10 IA__g_closure_invoke
    at gclosure.c line 490
  • #11 signal_emit_unlocked_R
    at gsignal.c line 2476
  • #12 IA__g_signal_emit_valist
    at gsignal.c line 2207
  • #13 IA__g_signal_emit
    at gsignal.c line 2241
  • #14 gtk_widget_event_internal
    at gtkwidget.c line 3901
  • #15 do_update
    at gnome-canvas.c line 3104
  • #16 idle_handler
    at gnome-canvas.c line 3184
  • #17 g_idle_dispatch
    at gmain.c line 3918
  • #18 IA__g_main_context_dispatch
    at gmain.c line 2037
  • #19 g_main_context_iterate
    at gmain.c line 2669
  • #20 IA__g_main_loop_run
    at gmain.c line 2873
  • #21 bonobo_main
    at bonobo-main.c line 311
  • #22 main
    at main.c line 614
  • #0 __kernel_vsyscall

Comment 6 Carlos Garcia Campos 2006-06-08 10:43:09 UTC
Created attachment 66966 [details] [review]
A patch 

The problem is that gtk_widget_ensure_style (button) modifies its ->child where g_label is already pointing. So by simply assigning g_label to button->child just after gtk_widget_ensure_style (button) fixes the problem. 

Here is the patch.
Comment 7 André Klapper 2006-06-08 12:01:23 UTC
i can confirm this, i also see this.
Comment 8 Veerapuram Varadhan 2006-06-08 12:12:41 UTC
Patch looks ok to commit to both STABLE and HEAD.
Comment 9 André Klapper 2006-06-08 12:37:26 UTC
*** Bug 344229 has been marked as a duplicate of this bug. ***
Comment 10 André Klapper 2006-06-08 13:08:57 UTC
*** Bug 344277 has been marked as a duplicate of this bug. ***
Comment 11 André Klapper 2006-06-08 13:42:20 UTC
*** Bug 344268 has been marked as a duplicate of this bug. ***
Comment 13 Ed Catmur 2006-06-09 08:17:55 UTC
It ain't fixed.

I'm still getting the crash (same crash point) even after applying the patch, generally some time into running evo.

Inspection of g_label shows it's been written with 0xaa, the gtype deadbeef. I guess something is making the button rebuild its internals, deleting g_label.
Comment 14 Ed Catmur 2006-06-09 08:20:56 UTC
Created attachment 67021 [details] [review]
e-table-header-utils.c.patch

Supplementary patch.

I thought of reffing g_label, or moving the GTK_BIN(button)->child access outside the block, but then I realised the elegant solution is to make g_label a weak pointer on itself.
Comment 15 André Klapper 2006-06-09 09:20:19 UTC
until now, i haven't seen the crash again.
ed, i'm reopening this bug (and changing severity and priority appropriately) to let others decide on this patch (i'm not in the position to review).
Comment 16 Frederic Crozat 2006-06-09 12:54:59 UTC
I can confirm the supplemntary patch really fix the crash (I had one report which wasn't fixed by initial patch but which is now fixed when adding the weak pointer fix).
Comment 17 André Klapper 2006-06-12 09:33:54 UTC
*** Bug 344618 has been marked as a duplicate of this bug. ***
Comment 18 André Klapper 2006-06-12 09:47:47 UTC
quoting from irc:
<harish> andre: there is a weak ref added which is adequate..
<harish> andre: approved. pl. resolve the bug after committing the patch

fixed both in head and stable branch:
http://cvs.gnome.org/viewcvs/evolution/widgets/table/e-table-header-utils.c?r1=1.22&r2=1.23
http://cvs.gnome.org/viewcvs/evolution/widgets/table/e-table-header-utils.c?r1=1.21.2.1&r2=1.21.2.2

thanks a lot everybody.