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 680525 - Deadlock in calendar when locking priv structure
Deadlock in calendar when locking priv structure
Status: RESOLVED FIXED
Product: evolution-ews
Classification: Other
Component: Calendar
3.4.x
Other Linux
: Normal critical
: ---
Assigned To: Milan Crha
Evolution EWS maintainer(s)
Depends on:
Blocks:
 
 
Reported: 2012-07-24 13:05 UTC by Milan Crha
Modified: 2012-07-24 17:45 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
ews patch (1.18 KB, patch)
2012-07-24 17:43 UTC, Milan Crha
committed Details | Review

Description Milan Crha 2012-07-24 13:05:40 UTC
Moving this from a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=842130

Evolution interface stuck while formatting message

It turned out that evolution is waiting on evolution-calendar-factory reply, but it has blocked main thread, thus the reply isn't coming to the caller.

Thread 1 (Thread 0xb766b740 (LWP 1424))

  • #0 __kernel_vsyscall
  • #1 __lll_lock_wait
    at ../nptl/sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S line 145
  • #2 _L_lock_733
    from /lib/libpthread.so.0
  • #3 __pthread_mutex_lock
    at pthread_mutex_lock.c line 86
  • #4 g_rec_mutex_lock
    at gthread-posix.c line 377
  • #5 g_static_rec_mutex_lock
    at deprecated/gthread-deprecated.c line 712
  • #6 ews_cal_start_refreshing
    at e-cal-backend-ews.c line 3492
  • #7 e_cal_backend_ews_start_query
    at e-cal-backend-ews.c line 3524
  • #8 e_cal_backend_start_view
    at e-cal-backend.c line 1352
  • #9 impl_DataCalView_start
    at e-data-cal-view.c line 435
  • #10 e_gdbus_marshallers_BOOLEAN__OBJECT
    at e-gdbus-marshallers.c line 124
  • #11 g_closure_invoke
    at gclosure.c line 777
  • #12 signal_emit_unlocked_R
    at gsignal.c line 3551
  • #13 g_signal_emit_valist
  • #14 g_signal_emit
    at gsignal.c line 3356
  • #15 e_gdbus_stub_handle_method_call
    at e-gdbus-templates.c line 679
  • #16 handle_method_call
    at e-gdbus-cal-view.c line 319
  • #17 call_in_idle_cb
    at gdbusconnection.c line 4687
  • #18 g_idle_dispatch
    at gmain.c line 4657
  • #19 g_main_dispatch
    at gmain.c line 2539
  • #20 g_main_context_dispatch
    at gmain.c line 3075
  • #21 g_main_context_iterate
    at gmain.c line 3146
  • #22 g_main_loop_run
    at gmain.c line 3340
  • #23 e_dbus_server_run
    at e-dbus-server.c line 253
  • #24 main
    at evolution-calendar-factory.c line 149

Comment 1 Milan Crha 2012-07-24 17:43:25 UTC
Created attachment 219596 [details] [review]
ews patch

for evolution-ews;

There were couple places where ECalBackendEws::priv could left locked, thus any following attempt to lock the structure resulted in deadlock in case of being called from other than the same thread as previously done lock.
Comment 2 Milan Crha 2012-07-24 17:45:14 UTC
Created commit b047aa1 in ews master (3.5.5+)
Created commit be4f378 in ews gnome-3-4 (3.4.4+)