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 558737 - Evolution freezes on trying to store folder
Evolution freezes on trying to store folder
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: Mailer
2.22.x (obsolete)
Other All
: Normal critical
: ---
Assigned To: evolution-mail-maintainers
Evolution QA team
: 543345 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2008-10-31 21:36 UTC by Patrick OCallaghan
Modified: 2008-11-06 18:46 UTC
See Also:
GNOME target: ---
GNOME version: 2.21/2.22


Attachments
proposed eds patch (1.70 KB, patch)
2008-11-05 11:41 UTC, Milan Crha
committed Details | Review

Description Patrick OCallaghan 2008-10-31 21:36:43 UTC
Steps to reproduce:
1. Start Evo
2. Use for a while
3. Evo freezes, UI is alive but won't do anything, --force-shutdown required


Stack trace:
(gdb) thread apply all bt

Thread 4 (Thread 0x44fcb950 (LWP 17680))

  • #0 __lll_lock_wait
    from /lib64/libpthread.so.0
  • #1 _L_lock_100
    from /lib64/libpthread.so.0
  • #2 __pthread_mutex_lock
    at pthread_mutex_lock.c line 86
  • #3 g_static_rec_mutex_lock
    from /lib64/libglib-2.0.so.0
  • #4 imap_sync_online
    at camel-imap-folder.c line 1017
  • #5 camel_folder_sync
    at camel-folder.c line 276
  • #6 mail_msg_proxy
    at mail-mt.c line 523
  • #7 ??
    from /lib64/libglib-2.0.so.0
  • #8 ??
    from /lib64/libglib-2.0.so.0
  • #9 start_thread
    at pthread_create.c line 297
  • #10 clone
    from /lib64/libc.so.6

Thread 3 (Thread 0x41784950 (LWP 17682))

  • #0 __lll_lock_wait
    from /lib64/libpthread.so.0
  • #1 _L_lock_100
    from /lib64/libpthread.so.0
  • #2 __pthread_mutex_lock
    at pthread_mutex_lock.c line 86
  • #3 g_static_rec_mutex_lock
    from /lib64/libglib-2.0.so.0
  • #4 camel_folder_refresh_info
    at camel-folder.c line 301
  • #5 do_copy
    at camel-imap-folder.c line 1744
  • #6 imap_transfer_online
  • #7 do_move
    at camel-filter-driver.c line 541
  • #8 e_sexp_term_eval
    at e-sexp.c line 710
  • #9 term_eval_begin
    at e-sexp.c line 654
  • #10 e_sexp_term_eval
    at e-sexp.c line 700
  • #11 e_sexp_eval
    at e-sexp.c line 1306
  • #12 camel_filter_driver_filter_message
    at camel-filter-driver.c line 1499
  • #13 filter_filter
    at camel-folder.c line 1717
  • #14 session_thread_proxy
    at camel-session.c line 587
  • #15 ??
    from /lib64/libglib-2.0.so.0
  • #16 ??
    from /lib64/libglib-2.0.so.0
  • #17 start_thread
    at pthread_create.c line 297
  • #18 clone
    from /lib64/libc.so.6

Thread 2 (Thread 0x459cc950 (LWP 17763))

  • #0 __lll_lock_wait
    from /lib64/libpthread.so.0
  • #1 _L_lock_100
    from /lib64/libpthread.so.0
  • #2 __pthread_mutex_lock
    at pthread_mutex_lock.c line 86
  • #3 g_static_rec_mutex_lock
    from /lib64/libglib-2.0.so.0
  • #4 get_folder_online
    at camel-imap-store.c line 1882
  • #5 camel_store_get_folder
    at camel-store.c line 266
  • #6 imap_can_refresh_folder
    at camel-imap-store.c line 3107
  • #7 get_folders
    at mail-send-recv.c line 789
  • #8 refresh_folders_exec
    at mail-send-recv.c line 820
  • #9 mail_msg_proxy
    at mail-mt.c line 523
  • #10 ??
    from /lib64/libglib-2.0.so.0
  • #11 ??
    from /lib64/libglib-2.0.so.0
  • #12 start_thread
    at pthread_create.c line 297
  • #13 clone
    from /lib64/libc.so.6

Thread 3 (Thread 0x41784950 (LWP 17682))

  • #0 __lll_lock_wait
    from /lib64/libpthread.so.0
  • #1 _L_lock_100
    from /lib64/libpthread.so.0
  • #2 __pthread_mutex_lock
    at pthread_mutex_lock.c line 86
  • #3 g_static_rec_mutex_lock
    from /lib64/libglib-2.0.so.0
  • #4 camel_folder_refresh_info
    at camel-folder.c line 301
  • #5 do_copy
    at camel-imap-folder.c line 1744
  • #6 imap_transfer_online
    at camel-imap-folder.c line 1844
  • #7 do_move
    at camel-filter-driver.c line 541
  • #8 e_sexp_term_eval
    at e-sexp.c line 710
  • #9 term_eval_begin
    at e-sexp.c line 654
  • #10 e_sexp_term_eval
    at e-sexp.c line 700
  • #11 e_sexp_eval
    at e-sexp.c line 1306
  • #12 camel_filter_driver_filter_message
    at camel-filter-driver.c line 1499
  • #13 filter_filter
    at camel-folder.c line 1717
  • #14 session_thread_proxy
    at camel-session.c line 587
  • #15 ??
    from /lib64/libglib-2.0.so.0
  • #16 ??
    from /lib64/libglib-2.0.so.0
  • #17 start_thread
    at pthread_create.c line 297
  • #18 clone
    from /lib64/libc.so.6

Thread 2 (Thread 0x459cc950 (LWP 17763))

  • #0 __lll_lock_wait
    from /lib64/libpthread.so.0
  • #1 _L_lock_100
    from /lib64/libpthread.so.0
  • #2 __pthread_mutex_lock
    at pthread_mutex_lock.c line 86
  • #3 g_static_rec_mutex_lock
    from /lib64/libglib-2.0.so.0
  • #4 get_folder_online
    at camel-imap-store.c line 1882
  • #5 camel_store_get_folder
    at camel-store.c line 266
  • #6 imap_can_refresh_folder
    at camel-imap-store.c line 3107
  • #7 get_folders
    at mail-send-recv.c line 789
  • #8 refresh_folders_exec
    at mail-send-recv.c line 820
  • #9 mail_msg_proxy
    at mail-mt.c line 523
  • #10 ??
    from /lib64/libglib-2.0.so.0
  • #11 ??
    from /lib64/libglib-2.0.so.0
  • #12 start_thread
    at pthread_create.c line 297
  • #13 clone
    from /lib64/libc.so.6



Other information:
The remote folder is on Gmail, accessed via IMAP and marked "download for offline operation". The console shows repeated messages such as:

(evolution:17268): evolution-mail-WARNING **: Failed to refresh folders: No such folder Lists

(evolution:17268): evolution-mail-WARNING **: Failed to refresh folders: No such folder Lists/Evo
Comment 1 Milan Crha 2008-10-31 22:37:29 UTC
I saw something quite similar, but with broken stack (it was some time back). Let me look at it, say next week, in case nobody else will be quicker.
Comment 2 Milan Crha 2008-11-05 11:41:38 UTC
Created attachment 122005 [details] [review]
proposed eds patch

for evolution-data-server;

The stack trace above is a bit confusing, some threads are there duplicated, but seems to be the same, so probably some paste issue :) Anyway, what I found:

Thread 4 (Thread 0x44fcb950 (LWP 17680))

  • #4 imap_sync_online
    at camel-imap-folder.c line 1017

Thread 3 (Thread 0x41784950 (LWP 17682))

  • #4 camel_folder_refresh_info
    at camel-folder.c line 301
  • #5 do_copy
    at camel-imap-folder.c line 1744
  • #6 imap_transfer_online

Thread 2 (Thread 0x459cc950 (LWP 17763))

  • #4 get_folder_online
    at camel-imap-store.c line 1882

See the Thread 3's destination folder is the same as the one in Thread 4. Thread 3 holds the connect lock, Thread 4 holds the folder lock, but Thread 4 waits for it. Bad luck for both. This patch should fix it. 

Note1: What a great coincidence (I think it's a coincidence).
Note2: I caused this with my changes to bug #274316 :(
Note3: gmail unrelated, removing it from the summary of the bug :)
Comment 3 Milan Crha 2008-11-05 11:44:46 UTC
*** Bug 543345 has been marked as a duplicate of this bug. ***
Comment 4 Srinivasa Ragavan 2008-11-06 15:27:53 UTC
Commit to stable/trunk
Comment 5 Milan Crha 2008-11-06 18:46:05 UTC
Committed to trunk. Committed revision 9735.
Committed to gnome-2-24. Committed revision 9736.