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 687360 - Crash on quit in gtk_style_context_get_valist()
Crash on quit in gtk_style_context_get_valist()
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: general
3.8.x (obsolete)
Other Linux
: Normal critical
: ---
Assigned To: Evolution Shell Maintainers Team
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2012-11-01 17:26 UTC by David Ronis
Modified: 2015-10-19 09:40 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
evo patch (1.30 KB, patch)
2012-11-29 13:21 UTC, Milan Crha
committed Details | Review

Description David Ronis 2012-11-01 17:26:33 UTC
I'm running yesterday's git/master.  When I exit evolution I get a core file.   
I'm running gtk+-3.7.0

Here's the backtrace:

Program terminated with signal 11, Segmentation fault.

Thread 1 (Thread 0xb0972880 (LWP 26418))

  • #0 gtk_style_context_get_valist
    at gtkstylecontext.c line 1428
  • #1 gtk_style_context_get
    at gtkstylecontext.c line 1463
  • #2 set_color_from_context
    at deprecated/gtkstyle.c line 651
  • #3 set_color
    at deprecated/gtkstyle.c line 709
  • #4 gtk_style_update_from_context
    at deprecated/gtkstyle.c line 745
  • #5 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 85
  • #6 g_closure_invoke
    at gclosure.c line 777
  • #7 signal_emit_unlocked_R
    at gsignal.c line 3567
  • #8 g_signal_emit_valist
    at gsignal.c line 3315
  • #9 g_signal_emit
    at gsignal.c line 3371
  • #10 gtk_style_context_do_invalidate
    at gtkstylecontext.c line 3000
  • #11 _gtk_style_context_queue_invalidate
    at gtkstylecontext.c line 3226
  • #12 _gtk_style_context_set_widget
    at gtkstylecontext.c line 1128
  • #13 gtk_widget_finalize
    at gtkwidget.c line 10338
  • #14 webkit_web_view_finalize(_GObject*)
    from /opt/garnome-3.7/lib/libwebkitgtk-3.0.so.0
  • #15 web_view_finalize
    at e-web-view.c line 839
  • #16 g_object_unref
    at gobject.c line 3023
  • #17 search_bar_dispose
    at e-search-bar.c line 292
  • #18 g_object_run_dispose
    at gobject.c line 1061
  • #19 gtk_widget_destroy
    at gtkwidget.c line 3974
  • #20 gtk_box_forall
    at gtkbox.c line 1865
  • #21 gtk_container_foreach
    at gtkcontainer.c line 2093
  • #22 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #23 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 85
  • #24 g_type_class_meta_marshal
    at gclosure.c line 970
  • #25 g_closure_invoke
    at gclosure.c line 777
  • #26 signal_emit_unlocked_R
    at gsignal.c line 3683
  • #27 g_signal_emit_valist
    at gsignal.c line 3315
  • #28 g_signal_emit
    at gsignal.c line 3371
  • #29 gtk_widget_dispose
    at gtkwidget.c line 10268
  • #30 preview_pane_dispose
    at e-preview-pane.c line 143
  • #31 g_object_run_dispose
    at gobject.c line 1061
  • #32 gtk_widget_destroy
    at gtkwidget.c line 3974
  • #33 gtk_paned_forall
    at gtkpaned.c line 1958
  • #34 gtk_container_foreach
    at gtkcontainer.c line 2093
  • #35 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #36 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 85
  • #37 g_type_class_meta_marshal
    at gclosure.c line 970
  • #38 g_closure_invoke
    at gclosure.c line 777
  • #39 signal_emit_unlocked_R
    at gsignal.c line 3683
  • #40 g_signal_emit_valist
    at gsignal.c line 3315
  • #41 g_signal_emit
    at gsignal.c line 3371
  • #42 gtk_widget_dispose
    at gtkwidget.c line 10268
  • #43 g_object_run_dispose
    at gobject.c line 1061
  • #44 gtk_widget_destroy
    at gtkwidget.c line 3974
  • #45 gtk_bin_forall
    at gtkbin.c line 170
  • #46 shell_content_forall
    at e-shell-content.c line 397
  • #47 gtk_container_foreach
    at gtkcontainer.c line 2093
  • #48 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #49 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 85
  • #50 g_type_class_meta_marshal
    at gclosure.c line 970
  • #51 g_closure_invoke
    at gclosure.c line 777
  • #52 signal_emit_unlocked_R
    at gsignal.c line 3683
  • #53 g_signal_emit_valist
    at gsignal.c line 3315
  • #54 g_signal_emit
    at gsignal.c line 3371
  • #55 gtk_widget_dispose
    at gtkwidget.c line 10268
  • #56 shell_content_dispose
    at e-shell-content.c line 169
  • #57 book_shell_content_dispose
    at e-book-shell-content.c line 242
  • #58 g_object_run_dispose
    at gobject.c line 1061
  • #59 gtk_widget_destroy
    at gtkwidget.c line 3974
  • #60 gtk_notebook_forall
    at gtknotebook.c line 4496
  • #61 gtk_container_foreach
    at gtkcontainer.c line 2093
  • #62 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #63 gtk_notebook_destroy
    at gtknotebook.c line 1719
  • #64 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 85
  • #65 g_type_class_meta_marshal
    at gclosure.c line 970
  • #66 g_closure_invoke
    at gclosure.c line 777
  • #67 signal_emit_unlocked_R
    at gsignal.c line 3683
  • #68 g_signal_emit_valist
    at gsignal.c line 3315
  • #69 g_signal_emit
    at gsignal.c line 3371
  • #70 gtk_widget_dispose
    at gtkwidget.c line 10268
  • #71 g_object_run_dispose
    at gobject.c line 1061
  • #72 gtk_widget_destroy
    at gtkwidget.c line 3974
  • #73 gtk_box_forall
    at gtkbox.c line 1865
  • #74 gtk_container_foreach
    at gtkcontainer.c line 2093
  • #75 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #76 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 85
  • #77 g_type_class_meta_marshal
    at gclosure.c line 970
  • #78 g_closure_invoke
    at gclosure.c line 777
  • #79 signal_emit_unlocked_R
    at gsignal.c line 3683
  • #80 g_signal_emit_valist
    at gsignal.c line 3315
  • #81 g_signal_emit
    at gsignal.c line 3371
  • #82 gtk_widget_dispose
    at gtkwidget.c line 10268
  • #83 g_object_run_dispose
    at gobject.c line 1061
  • #84 gtk_widget_destroy
    at gtkwidget.c line 3974
  • #85 gtk_paned_forall
    at gtkpaned.c line 1958
  • #86 gtk_container_foreach
    at gtkcontainer.c line 2093
  • #87 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #88 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 85
  • #89 g_type_class_meta_marshal
    at gclosure.c line 970
  • #90 g_closure_invoke
    at gclosure.c line 777
  • #91 signal_emit_unlocked_R
    at gsignal.c line 3683
  • #92 g_signal_emit_valist
    at gsignal.c line 3315
  • #93 g_signal_emit
    at gsignal.c line 3371
  • #94 gtk_widget_dispose
    at gtkwidget.c line 10268
  • #95 g_object_run_dispose
    at gobject.c line 1061
  • #96 gtk_widget_destroy
    at gtkwidget.c line 3974
  • #97 gtk_box_forall
    at gtkbox.c line 1865
  • #98 gtk_container_foreach
    at gtkcontainer.c line 2093
  • #99 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #100 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 85
  • #101 g_type_class_meta_marshal
    at gclosure.c line 970
  • #102 g_closure_invoke
    at gclosure.c line 777
  • #103 signal_emit_unlocked_R
    at gsignal.c line 3683
  • #104 g_signal_emit_valist
    at gsignal.c line 3315
  • #105 g_signal_emit
    at gsignal.c line 3371
  • #106 gtk_widget_dispose
    at gtkwidget.c line 10268
  • #107 g_object_run_dispose
    at gobject.c line 1061
  • #108 gtk_widget_destroy
    at gtkwidget.c line 3974
  • #109 gtk_bin_forall
    at gtkbin.c line 170
  • #110 gtk_container_foreach
    at gtkcontainer.c line 2093
  • #111 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #112 gtk_window_destroy
    at gtkwindow.c line 4753
  • #113 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 85
  • #114 g_type_class_meta_marshal
    at gclosure.c line 970
  • #115 g_closure_invoke
    at gclosure.c line 777
  • #116 signal_emit_unlocked_R
    at gsignal.c line 3683
  • #117 g_signal_emit_valist
    at gsignal.c line 3315
  • #118 g_signal_emit
    at gsignal.c line 3371
  • #119 gtk_widget_dispose
    at gtkwidget.c line 10268
  • #120 gtk_window_dispose
    at gtkwindow.c line 2438
  • #121 shell_window_dispose
    at e-shell-window.c line 381
  • #122 g_object_run_dispose
    at gobject.c line 1061
  • #123 gtk_widget_destroy
    at gtkwidget.c line 3974
  • #124 g_list_foreach
    at glist.c line 942
  • #125 shell_ready_for_quit
    at e-shell.c line 417
  • #126 shell_ready_for_quit
    at e-shell.c line 385
  • #127 toggle_refs_notify
    at gobject.c line 2732
  • #128 mail_backend_store_operation_done_cb
    at e-mail-backend.c line 130
  • #129 g_simple_async_result_complete
    at gsimpleasyncresult.c line 777
  • #130 complete_in_idle_cb_for_thread
    at gsimpleasyncresult.c line 845
  • #131 g_idle_dispatch
    at gmain.c line 4806
  • #132 g_main_dispatch
    at gmain.c line 2715
  • #133 g_main_context_dispatch
    at gmain.c line 3219
  • #134 g_main_context_iterate
    at gmain.c line 3290
  • #135 g_main_loop_run
    at gmain.c line 3484
  • #136 gtk_main
    at gtkmain.c line 1160
  • #137 main
    at main.c line 711

Comment 1 Milan Crha 2012-11-02 07:15:45 UTC
Thanks for a bug report. Is it crashing every time you close evolution, please? If so, then try to reproduce this under valgrind, because it doesn't crash for me on exit, though I use gtk3-3.6.1. The valgrind command is:
   $ G_SLICE=always-malloc valgrind --num-callers=50 evolution &>log.txt
Comment 2 Milan Crha 2012-11-02 08:10:08 UTC
Interesting, I just got the same crash too. For the first time. It was when I was in the Contacts view, I selected Personal and then "X" to close the window - suddenly the crash happened. Maybe it's some timing, because I think the preview panel was filled just before the exit, or in time between my click to "X" and closure of the shell window.
Comment 3 Milan Crha 2012-11-29 07:42:18 UTC
Downstream bug report about the same from 3.6.1:
https://bugzilla.redhat.com/show_bug.cgi?id=869182
Comment 4 Milan Crha 2012-11-29 13:21:22 UTC
Created attachment 230183 [details] [review]
evo patch

for evolution;

This was hard. The trick was to enter Contacts view and select at least one contact there. After that a GtkStyle from the 'book display' is passed into the EABContactFormatter and references, but it's not freed, thus on GtkWidget's finalization, which invalidates the GtkStyleContext, is called update of the leaked GtkStyle, and it leads to the crash.
Comment 5 Milan Crha 2012-11-29 13:24:37 UTC
Created commit c073de6 in evo master (3.7.3+)
Created commit 55f51bb in evo gnome-3-6 (3.6.3+)
Comment 6 Milan Crha 2013-05-02 08:56:47 UTC
I'm reopening this, it's still reproducible in 3.8.1:
https://bugzilla.redhat.com/show_bug.cgi?id=958155


Thread 1 (Thread 0x7fd44ea63a40 (LWP 1877))

  • #0 gtk_style_context_get_valist
    at gtkstylecontext.c line 1443
  • #1 gtk_style_context_get
    at gtkstylecontext.c line 1478
  • #2 set_color_from_context
    at deprecated/gtkstyle.c line 651
  • #3 set_color
    at deprecated/gtkstyle.c line 709
  • #4 gtk_style_update_from_context
    at deprecated/gtkstyle.c line 745
  • #5 g_closure_invoke
    at gclosure.c line 777
  • #6 signal_emit_unlocked_R
    at gsignal.c line 3584
  • #7 g_signal_emit_valist
    at gsignal.c line 3328
  • #8 g_signal_emit
    at gsignal.c line 3384
  • #9 gtk_style_context_do_invalidate
    at gtkstylecontext.c line 3095
  • #10 gtk_style_context_invalidate
    at gtkstylecontext.c line 3357
  • #11 gtk_widget_finalize
    at gtkwidget.c line 10849
  • #12 g_object_unref
    at gobject.c line 3024
  • #13 search_bar_dispose
    at e-search-bar.c line 292
  • #14 g_object_run_dispose
    at gobject.c line 1062
  • #15 gtk_box_forall
    at gtkbox.c line 1865
  • #16 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #17 g_closure_invoke
    at gclosure.c line 777
  • #18 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #19 g_signal_emit_valist
    at gsignal.c line 3328
  • #20 g_signal_emit
    at gsignal.c line 3384
  • #21 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #22 g_object_run_dispose
    at gobject.c line 1062
  • #23 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #24 g_closure_invoke
    at gclosure.c line 777
  • #25 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #26 g_signal_emit_valist
    at gsignal.c line 3328
  • #27 g_signal_emit
    at gsignal.c line 3384
  • #28 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #29 g_object_run_dispose
    at gobject.c line 1062
  • #30 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #31 g_closure_invoke
    at gclosure.c line 777
  • #32 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #33 g_signal_emit_valist
    at gsignal.c line 3328
  • #34 g_signal_emit
    at gsignal.c line 3384
  • #35 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #36 g_object_run_dispose
    at gobject.c line 1062
  • #37 gtk_notebook_forall
    at gtknotebook.c line 4498
  • #38 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #39 g_closure_invoke
    at gclosure.c line 777
  • #40 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #41 g_signal_emit_valist
    at gsignal.c line 3328
  • #42 g_signal_emit
    at gsignal.c line 3384
  • #43 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #44 g_object_run_dispose
    at gobject.c line 1062
  • #45 gtk_box_forall
    at gtkbox.c line 1865
  • #46 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #47 g_closure_invoke
    at gclosure.c line 777
  • #48 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #49 g_signal_emit_valist
    at gsignal.c line 3328
  • #50 g_signal_emit
    at gsignal.c line 3384
  • #51 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #52 g_object_run_dispose
    at gobject.c line 1062
  • #53 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #54 g_closure_invoke
    at gclosure.c line 777
  • #55 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #56 g_signal_emit_valist
    at gsignal.c line 3328
  • #57 g_signal_emit
    at gsignal.c line 3384
  • #58 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #59 g_object_run_dispose
    at gobject.c line 1062
  • #60 gtk_box_forall
    at gtkbox.c line 1865
  • #61 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #62 g_closure_invoke
    at gclosure.c line 777
  • #63 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #64 g_signal_emit_valist
    at gsignal.c line 3328
  • #65 g_signal_emit
    at gsignal.c line 3384
  • #66 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #67 g_object_run_dispose
    at gobject.c line 1062
  • #68 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #69 g_closure_invoke
    at gclosure.c line 777
  • #70 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #71 g_signal_emit_valist
    at gsignal.c line 3328
  • #72 g_signal_emit
    at gsignal.c line 3384
  • #73 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #74 g_object_run_dispose
    at gobject.c line 1062
  • #75 g_list_foreach
    at glist.c line 949
  • #76 shell_ready_for_quit
    at e-shell.c line 410
  • #77 mail_msg_idle_cb
    at mail-mt.c line 399
  • #78 g_main_dispatch
    at gmain.c line 3054
  • #79 g_main_context_dispatch
    at gmain.c line 3630
  • #80 g_main_context_iterate
    at gmain.c line 3701
  • #81 g_main_loop_run
    at gmain.c line 3895
  • #82 gtk_main
    at gtkmain.c line 1156
  • #83 main
    at main.c line 707

Comment 7 Milan Crha 2013-06-05 14:03:54 UTC
Hrm, I'm not able to reproduce this on demand, it sometimes crashes when closing in the Contacts view, but it doesn't want to today.
Comment 8 Milan Crha 2015-10-19 09:40:21 UTC
I'm closing this, I didn't see it for a long time.