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 678783 - [abrt] Crash under e_attachment_set_file_info()
[abrt] Crash under e_attachment_set_file_info()
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: Mailer
3.4.x (obsolete)
Other Linux
: Normal critical
: ---
Assigned To: evolution-mail-maintainers
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2012-06-25 11:21 UTC by Milan Crha
Modified: 2012-07-13 12:25 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
evo patch (3.48 KB, patch)
2012-07-13 12:22 UTC, Milan Crha
committed Details | Review

Description Milan Crha 2012-06-25 11:21:40 UTC
Moving this from a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=834252

[abrt] evolution-3.4.2-1.fc17: gtk_widget_path_copy: Process /usr/bin/evolution was killed by signal 11 (SIGSEGV)

libreport version: 2.0.10
abrt_version:   2.0.10
backtrace_rating: 4
cmdline:        evolution
comment:        Died during fetching message with attachment form Exchange server (via EWS). 
crash_function: gtk_widget_path_copy
executable:     /usr/bin/evolution
kernel:         3.4.2-4.fc17.x86_64
time:           czw, 21 cze 2012, 12:50:38


Thread 2 (Thread 0x7f30b79d09c0 (LWP 1893))

  • #0 memset
    at /usr/include/bits/string3.h line 85
  • #1 gtk_path_element_copy
    at gtkwidgetpath.c line 130
  • #2 gtk_widget_path_copy
    at gtkwidgetpath.c line 183
  • #3 gtk_box_get_path_for_child
    at gtkbox.c line 903
  • #4 gtk_container_get_path_for_child
    at gtkcontainer.c line 3386
  • #5 gtk_widget_get_path
    at gtkwidget.c line 14043
  • #6 _gtk_widget_update_path
    at gtkwidget.c line 7992
  • #7 reset_style_recurse
    at gtkwidget.c line 8523
  • #8 gtk_box_forall
    at gtkbox.c line 1858
  • #9 gtk_widget_reset_style
    at gtkwidget.c line 8547
  • #10 gtk_box_forall
    at gtkbox.c line 1858
  • #11 g_closure_invoke
    at gclosure.c line 777
  • #12 signal_emit_unlocked_R
    at gsignal.c line 3547
  • #13 g_signal_emit_valist
    at gsignal.c line 3296
  • #14 g_signal_emit
    at gsignal.c line 3352
  • #15 g_object_dispatch_properties_changed
    at gobject.c line 1041
  • #16 g_object_notify_by_spec_internal
    at gobject.c line 1133
  • #17 g_object_notify
    at gobject.c line 1175
  • #18 gtk_widget_hide
    at gtkwidget.c line 4112
  • #19 gtk_widget_hide
    at gtkwidget.c line 4087
  • #20 gtk_button_update
    at gtkbutton.c line 993
  • #21 g_closure_invoke
    at gclosure.c line 777
  • #22 signal_emit_unlocked_R
    at gsignal.c line 3547
  • #23 g_signal_emit_valist
    at gsignal.c line 3296
  • #24 g_signal_emit
    at gsignal.c line 3352
  • #25 g_object_dispatch_properties_changed
    at gobject.c line 1041
  • #26 g_object_notify_by_spec_internal
    at gobject.c line 1133
  • #27 g_object_notify
    at gobject.c line 1175
  • #28 gtk_action_set_visible
    at gtkaction.c line 1145
  • #29 mail_attachment_bar_update_status
    at e-mail-attachment-bar.c line 117
  • #30 g_closure_invoke
    at gclosure.c line 777
  • #31 signal_emit_unlocked_R
    at gsignal.c line 3547
  • #32 g_signal_emit_valist
    at gsignal.c line 3296
  • #33 g_signal_emit
    at gsignal.c line 3352
  • #34 g_object_dispatch_properties_changed
    at gobject.c line 1041
  • #35 g_object_notify_queue_thaw
    at gobject.c line 291
  • #36 g_object_thaw_notify
    at gobject.c line 1264
  • #37 e_attachment_store_add_attachment
    at e-attachment-store.c line 229
  • #38 efhd_attachment_button
    at em-format-html-display.c line 1168
  • #39 efh_object_requested
    at em-format-html.c line 1821
  • #40 html_g_cclosure_marshal_BOOLEAN__OBJECT
    at htmlmarshal.c line 81
  • #41 g_closure_invoke
    at gclosure.c line 777
  • #42 signal_emit_unlocked_R
    at gsignal.c line 3547
  • #43 g_signal_emit_valist
    at gsignal.c line 3306
  • #44 g_signal_emit
    at gsignal.c line 3352
  • #45 html_engine_object_requested_cb
    at gtkhtml.c line 570
  • #46 html_g_cclosure_marshal_BOOLEAN__OBJECT
    at htmlmarshal.c line 81
  • #47 g_closure_invoke
    at gclosure.c line 777
  • #48 signal_emit_unlocked_R
    at gsignal.c line 3547
  • #49 g_signal_emit_valist
    at gsignal.c line 3306
  • #50 g_signal_emit
    at gsignal.c line 3352
  • #51 element_parse_object
    at htmlengine.c line 1702
  • #52 parse_one_token
    at htmlengine.c line 4186
  • #53 parse_one_token
    at htmlengine.c line 4154
  • #54 new_parse_body
    at htmlengine.c line 1491
  • #55 html_engine_timer_event
    at htmlengine.c line 5166
  • #56 html_engine_flush
    at htmlengine.c line 7242
  • #57 gtk_html_flush
    at gtkhtml.c line 6548
  • #58 html_stream_sync_flush
    at em-html-stream.c line 108
  • #59 sync_stream_process_message
    at em-sync-stream.c line 87
  • #60 g_main_dispatch
    at gmain.c line 2539
  • #61 g_main_context_dispatch
    at gmain.c line 3075
  • #62 g_main_context_iterate
    at gmain.c line 3146
  • #63 g_main_loop_run
    at gmain.c line 3340
  • #64 gtk_main
    at gtkmain.c line 1161
  • #65 main
    at main.c line 681

Thread 1 (Thread 0x7f306e7fc700 (LWP 5113))

  • #0 gtk_widget_path_copy
    at gtkwidgetpath.c line 177
  • #1 gtk_style_context_set_path
    at gtkstylecontext.c line 1716
  • #2 gtk_widget_get_path
    at gtkwidget.c line 14065
  • #3 _gtk_widget_update_path
    at gtkwidget.c line 7992
  • #4 reset_style_recurse
    at gtkwidget.c line 8523
  • #5 gtk_widget_reset_style
    at gtkwidget.c line 8547
  • #6 gtk_box_forall
    at gtkbox.c line 1858
  • #7 g_closure_invoke
    at gclosure.c line 777
  • #8 signal_emit_unlocked_R
    at gsignal.c line 3547
  • #9 g_signal_emit_valist
    at gsignal.c line 3296
  • #10 g_signal_emit
    at gsignal.c line 3352
  • #11 g_object_dispatch_properties_changed
    at gobject.c line 1041
  • #12 g_object_notify_by_spec_internal
    at gobject.c line 1133
  • #13 g_object_notify
    at gobject.c line 1175
  • #14 gtk_widget_show
    at gtkwidget.c line 4012
  • #15 gtk_widget_show
    at gtkwidget.c line 3988
  • #16 gtk_button_update
    at gtkbutton.c line 991
  • #17 g_closure_invoke
    at gclosure.c line 777
  • #18 signal_emit_unlocked_R
    at gsignal.c line 3547
  • #19 g_signal_emit_valist
    at gsignal.c line 3296
  • #20 g_signal_emit
    at gsignal.c line 3352
  • #21 g_object_dispatch_properties_changed
    at gobject.c line 1041
  • #22 g_object_notify_by_spec_internal
    at gobject.c line 1133
  • #23 g_object_notify
    at gobject.c line 1175
  • #24 gtk_action_set_visible
    at gtkaction.c line 1145
  • #25 mail_attachment_bar_update_status
    at e-mail-attachment-bar.c line 113
  • #26 g_closure_invoke
    at gclosure.c line 777
  • #27 signal_emit_unlocked_R
    at gsignal.c line 3547
  • #28 g_signal_emit_valist
    at gsignal.c line 3296
  • #29 g_signal_emit
    at gsignal.c line 3352
  • #30 g_object_dispatch_properties_changed
    at gobject.c line 1041
  • #31 g_object_notify_by_spec_internal
    at gobject.c line 1133
  • #32 g_object_notify
    at gobject.c line 1175
  • #33 e_attachment_set_file_info
    at e-attachment.c line 438
  • #34 attachment_load_from_mime_part_thread
    at e-attachment.c line 1842
  • #35 run_in_thread
    at gsimpleasyncresult.c line 861
  • #36 io_job_thread
    at gioscheduler.c line 177
  • #37 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #38 g_thread_proxy
    at gthread.c line 801
  • #39 start_thread
    at pthread_create.c line 309
  • #40 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 115

Comment 1 Milan Crha 2012-06-25 11:23:30 UTC
On the first look, backtrace's Thread 2 is the main thread, where all UI/gtk functions should be only called, but here Thread 1, a dedicated thread for attachment_load_from_mime_part_thread() calls gtk+ functions in a signal handler after e_attachment_set_file_info().
Comment 2 Milan Crha 2012-07-13 12:22:34 UTC
Created attachment 218711 [details] [review]
evo patch

for evolution;

This avoids any EAttachment::set function call from attachment_load_from_mime_part_thread(), and moves it into e_attachment_load_finish() function, thus the notification on EAttachment properties will be delivered there, which is (usually) in the main thread.
Comment 3 Milan Crha 2012-07-13 12:25:12 UTC
Created commit 76bc1fd in evo master (3.5.4+)
Created commit 6da48c7 in evo gnome-3-4 (3.4.4+)