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 693420 - Crash when adding contact list as attendee
Crash when adding contact list as attendee
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: Contacts
3.8.x (obsolete)
Other Linux
: Normal critical
: ---
Assigned To: evolution-addressbook-maintainers
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2013-02-08 13:48 UTC by Vadim Rutkovsky
Modified: 2013-09-13 01:07 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
evo patch (1.07 KB, patch)
2013-02-21 18:59 UTC, Milan Crha
committed Details | Review

Description Vadim Rutkovsky 2013-02-08 13:48:22 UTC
Original report: https://bugzilla.redhat.com/show_bug.cgi?id=909220

Reproduced in evolution-3.6.2-3.el7.x86_64 and evolution 3.7.5 from jhbuild

Steps To Reproduce:
1. Create a contact list with several emails added
2. Create a meeting
3. Add a new attendee
4. Type the contact lists' name
5. In drop-down combobox select the created contact list

Trace:
[New LWP 2971]
[New LWP 2972]
[New LWP 2973]
[New LWP 2976]
[New LWP 2981]
[New LWP 3010]
[New LWP 3033]
[New LWP 3034]
[New LWP 3037]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
warning: "/var/cache/abrt-di/usr/lib/debug/usr/lib64/libcairo-gobject.so.2.11200.8.debug": separate debug info file has no debug info
warning: "/var/cache/abrt-di/usr/lib/debug/usr/lib64/libicudata.so.49.1.1.debug": separate debug info file has no debug info
warning: Skipping deprecated .gdb_index section in /var/cache/abrt-di/usr/lib/debug/lib64/libkeyutils.so.1.4.debug.
Do "set use-deprecated-index-sections on" before the file is read
to use the section anyway.
Core was generated by `evolution'.
Program terminated with signal 6, Aborted.

Thread 1 (Thread 0x7fe91d06fa00 (LWP 2971))

  • #0 __GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 63
  • #1 __GI_abort
    at abort.c line 90
  • #2 g_assertion_message
    at gtestutils.c line 1877
  • #3 g_assertion_message_expr
    at gtestutils.c line 1888
  • #4 _gtk_rbtree_node_get_index
    at gtkrbtree.c line 949
  • #5 _gtk_tree_view_accessible_remove
    at gtktreeviewaccessible.c line 1606
  • #6 gtk_tree_view_row_deleted
    at gtktreeview.c line 9098
  • #7 g_closure_invoke
    at gclosure.c line 777
  • #8 signal_emit_unlocked_R
    at gsignal.c line 3551
  • #9 g_signal_emit_valist
    at gsignal.c line 3300
  • #10 g_signal_emit
    at gsignal.c line 3356
  • #11 gtk_tree_model_row_deleted
    at gtktreemodel.c line 1867
  • #12 e_meeting_store_remove_attendee
    at e-meeting-store.c line 1111
  • #13 attendee_edited_cb
    at e-meeting-list-view.c line 474
  • #14 g_closure_invoke
    at gclosure.c line 777
  • #15 signal_emit_unlocked_R
    at gsignal.c line 3551
  • #16 g_signal_emit_valist
    at gsignal.c line 3300
  • #17 g_signal_emit
    at gsignal.c line 3356
  • #18 e_select_names_renderer_editing_done
    at e-select-names-renderer.c line 98
  • #19 g_closure_invoke
    at gclosure.c line 777
  • #20 signal_emit_unlocked_R
    at gsignal.c line 3551
  • #21 g_signal_emit_valist
    at gsignal.c line 3300
  • #22 g_signal_emit_by_name
    at gsignal.c line 3393
  • #23 g_cclosure_marshal_VOID__POINTERv
    at gmarshal.c line 1236
  • #24 _g_closure_invoke_va
    at gclosure.c line 840
  • #25 g_signal_emit_valist
    at gsignal.c line 3211
  • #26 g_signal_emit
    at gsignal.c line 3356
  • #27 completion_match_selected
    from /lib64/libedataserverui-3.0.so.4
  • #28 _gtk_marshal_BOOLEAN__OBJECT_BOXED
    at gtkmarshalers.c line 1028
  • #29 g_closure_invoke
    at gclosure.c line 777
  • #30 signal_emit_unlocked_R
    at gsignal.c line 3551
  • #31 g_signal_emit_valist
    at gsignal.c line 3310
  • #32 g_signal_emit
    at gsignal.c line 3356
  • #33 gtk_entry_completion_list_button_press
    at gtkentrycompletion.c line 968
  • #34 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 85
  • #35 g_closure_invoke
    at gclosure.c line 777
  • #36 signal_emit_unlocked_R
    at gsignal.c line 3551
  • #37 g_signal_emit_valist
    at gsignal.c line 3310
  • #38 g_signal_emit
    at gsignal.c line 3356
  • #39 gtk_widget_event_internal
    at gtkwidget.c line 6303
  • #40 gtk_widget_event
    at gtkwidget.c line 5960
  • #41 propagate_event_up
    at gtkmain.c line 2397
  • #42 propagate_event
    at gtkmain.c line 2505
  • #43 gtk_main_do_event
    at gtkmain.c line 1720
  • #44 gdk_event_source_dispatch
    at gdkeventsource.c line 358
  • #45 g_main_dispatch
    at gmain.c line 2715
  • #46 g_main_context_dispatch
    at gmain.c line 3219
  • #47 g_main_context_iterate
    at gmain.c line 3290
  • #48 g_main_loop_run
    at gmain.c line 3484
  • #49 gtk_main
    at gtkmain.c line 1160
  • #50 main
    at main.c line 711

Comment 1 Vadim Rutkovsky 2013-02-08 14:11:48 UTC
Note, that contact list contacts can be added correctly using 'Attendees' dialog
Comment 2 Milan Crha 2013-02-21 18:35:15 UTC
Thanks for a bug report. I can confirm the crash.
Comment 3 Milan Crha 2013-02-21 18:59:10 UTC
Created attachment 237095 [details] [review]
evo patch

for evolution;

The reason is that the e_meeting_store_remove_attendee() is called twoce for the same contact, once at attendee_edited_cb(), the second time in attendee_editing_canceled_cb(), during the previous removal. I see multiple ways of fixing this, but I chose this one, because the gtk_tree_model_row_deleted() should be called *after* the row is removed from the store, not before. This also helps to avoid re-invocation of the e_meeting_store_remove_attendee() in attendee_editing_canceled_cb(), because the 'attendee' is not in the store any more.
Comment 4 Milan Crha 2013-02-21 19:03:14 UTC
Created commit b1fc3c5 in evo master (3.7.91+)
Created commit 4dbbb69 in evo gnome-3-6 (3.6.4+)