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 680502 - Deadlock in contacts backend
Deadlock in contacts backend
Status: RESOLVED FIXED
Product: evolution-data-server
Classification: Platform
Component: Calendar
3.4.x (obsolete)
Other Linux
: Normal critical
: ---
Assigned To: evolution-calendar-maintainers
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2012-07-24 06:52 UTC by Milan Crha
Modified: 2012-07-24 07:08 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
eds patch (6.21 KB, patch)
2012-07-24 07:06 UTC, Milan Crha
committed Details | Review

Description Milan Crha 2012-07-24 06:52:46 UTC
Moving this from a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=841005

Contacts backend can stuck calendar factory on ESource change, as indicated in this backtrace.


[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
[New Thread 0xb5fffb40 (LWP 1579)]
[New Thread 0xb7397b40 (LWP 1577)]
0xb7709424 in __kernel_vsyscall ()

Thread 1 (Thread 0xb76e9740 (LWP 1576))

  • #0 __kernel_vsyscall
  • #1 __lll_lock_wait
    from /lib/libpthread.so.0
  • #2 _L_lock_860
    from /lib/libpthread.so.0
  • #3 pthread_mutex_lock
    from /lib/libpthread.so.0
  • #4 g_mutex_lock
    from /lib/libglib-2.0.so.0
  • #5 create_book_record
    at e-cal-backend-contacts.c line 464
  • #6 source_added_cb
    at e-cal-backend-contacts.c line 656
  • #7 source_list_changed_cb
    at e-cal-backend-contacts.c line 707
  • #8 g_cclosure_marshal_VOID__VOIDv
    from /lib/libgobject-2.0.so.0
  • #9 ??
    from /lib/libgobject-2.0.so.0
  • #10 g_signal_emit_valist
    from /lib/libgobject-2.0.so.0
  • #11 g_signal_emit
    from /lib/libgobject-2.0.so.0
  • #12 load_from_gconf
    at e-source-list.c line 176
  • #13 conf_changed_callback
    at e-source-list.c line 238
  • #14 ??
    from /lib/libgconf-2.so.4
  • #15 gconf_listeners_notify
    from /lib/libgconf-2.so.4
  • #16 ??
    from /lib/libgconf-2.so.4
  • #17 ??
    from /lib/libgconf-2.so.4
  • #18 ??
    from /lib/libglib-2.0.so.0
  • #19 g_main_context_dispatch
    from /lib/libglib-2.0.so.0
  • #20 ??
    from /lib/libglib-2.0.so.0
  • #21 g_main_loop_run
    from /lib/libglib-2.0.so.0
  • #22 e_dbus_server_run
    at e-dbus-server.c line 253
  • #23 main
    at evolution-calendar-factory.c line 149

Comment 1 Milan Crha 2012-07-24 06:55:23 UTC
The issue here is that source_changed_cb hold mutex which create_book_record needs to use too.
Comment 2 Milan Crha 2012-07-24 07:06:21 UTC
Created attachment 219549 [details] [review]
eds patch

for evolution-data-server (3.4.3);

Basically changing the mutex to rec_mutex fixes the issue.
Comment 3 Milan Crha 2012-07-24 07:08:41 UTC
Created commit 9316261 in eds master (3.5.5+)
Created commit d56ed59 in eds gnome-3-4 (3.4.4+)