Ticket #43 (defect)

Opened 2 years ago

Last modified 2 years ago

Deadlock in case of triggering a get_headers_async cancellation

Status: closed (fixed)

Reported by: pvanhoof Assigned to: pvanhoof
Priority: blocker Milestone: A first release
Component: libtinymail-camel Version: 1.0
Keywords: Cc:

In case you cancel the getting of headers, by selecting another folder before the current is fully retrieved, you'll encounter a deadlock:

(gdb) thread apply all bt

Thread 58 (Thread -1305478240 (LWP 22359)):
#0  0xffffe410 in __kernel_vsyscall ()
#1  0xb7d86543 in __xstat64 () from /lib/tls/i686/cmov/libc.so.6
#2  0xb7d4b520 in tzset () from /lib/tls/i686/cmov/libc.so.6
#3  0xb7d4a512 in adjtime () from /lib/tls/i686/cmov/libc.so.6
#4  0xb7d4af8e in tzset () from /lib/tls/i686/cmov/libc.so.6
#5  0xb7d49e77 in timelocal () from /lib/tls/i686/cmov/libc.so.6
#6  0xb6dc6079 in e_mktime_utc (tm=0xb22ff120) at e-time-utils.c:1917
#7  0xb6218dd1 in decode_internaldate (
    in=0xb0d74e58 "10-May-2006 13:58:45 +0200") at camel-imap-folder.c:2779
#8  0xb6219374 in imap_update_summary (folder=0x82012d8, exists=50377, 
    changes=<value optimized out>, ex=0xb22ff430) at camel-imap-folder.c:2817
#9  0xb621a350 in camel_imap_folder_changed (folder=0x82012d8, exists=50377, 
    expunged=0x0, ex=0xb22ff430) at camel-imap-folder.c:3723
#10 0xb621a404 in imap_rescan (folder=0x82012d8, exists=50377, ex=0xb22ff430)
    at camel-imap-folder.c:1067
#11 0xb621b1de in camel_imap_folder_selected (folder=0x82012d8, 
    response=0x89165f0, ex=0xb22ff430) at camel-imap-folder.c:630
#12 0xb621b69f in imap_refresh_info (folder=0x82012d8, ex=0xb22ff430)
    at camel-imap-folder.c:777
#13 0xb6d40656 in disco_refresh_info (folder=0x82012d8, ex=0xb22ff430)
    at camel-disco-folder.c:267
---Type <return> to continue, or q <return> to quit---
#14 0xb6d5121e in camel_folder_refresh_info (folder=0x82012d8, ex=0xb22ff430)
    at camel-folder.c:311
#15 0xb7164057 in tny_camel_folder_refresh_async_thread (
    thr_user_data=0xb260c600) at tny-camel-folder.c:882
#16 0xb71e038f in g_thread_create_full () from /usr/lib/libglib-2.0.so.0
#17 0xb7cbc504 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#18 0xb7d9751e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 1 (Thread -1229203792 (LWP 22245)):
#0  0xffffe410 in __kernel_vsyscall ()
#1  0xb7cc201e in __lll_mutex_lock_wait ()
   from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb7cbe673 in _L_mutex_lock_49 () from /lib/tls/i686/cmov/libpthread.so.0
#3  0xb7da3ac0 in pthread_equal () from /lib/tls/i686/cmov/libc.so.6
#4  0xb7da3be6 in pthread_mutex_lock () from /lib/tls/i686/cmov/libc.so.6
#5  0xb71e0af0 in g_static_rec_mutex_lock () from /usr/lib/libglib-2.0.so.0
#6  0xb71622f8 in _tny_camel_folder_check_uncache (self=0x8b2d570, 
    priv=0x8b2d580) at tny-camel-folder.c:274
#7  0xb715bf07 in tny_camel_header_finalize (object=0x8be29c0)
    at tny-camel-header.c:304
#8  0xb72c5aec in g_object_unref () from /usr/lib/libgobject-2.0.so.0
#9  0xb71a43c9 in g_ptr_array_foreach () from /usr/lib/libglib-2.0.so.0
#10 0xb717f09e in tny_gtk_header_list_model_finalize (object=0x80d7980)
---Type <return> to continue, or q <return> to quit---
    at tny-gtk-header-list-model.c:699
#11 0xb72c5aec in g_object_unref () from /usr/lib/libgobject-2.0.so.0
#12 0xb788aff0 in gtk_tree_model_filter_convert_child_iter_to_iter ()
   from /usr/lib/libgtk-x11-2.0.so.0
#13 0xb788b1cf in gtk_tree_model_filter_convert_child_iter_to_iter ()
   from /usr/lib/libgtk-x11-2.0.so.0
#14 0xb72c5aec in g_object_unref () from /usr/lib/libgobject-2.0.so.0
#15 0xb78a0d21 in gtk_tree_view_set_model () from /usr/lib/libgtk-x11-2.0.so.0
#16 0x0804db7b in set_header_view_model (header_view=0x80b4008, 
    model=0x80b8338) at tny-demoui-summary-view.c:122
#17 0x0804dddd in on_mailbox_view_tree_selection_changed (selection=0x80af8e0, 
    user_data=0x807f898) at tny-demoui-summary-view.c:559
#18 0xb72d0b29 in g_cclosure_marshal_VOID__VOID ()
   from /usr/lib/libgobject-2.0.so.0
#19 0xb72c379b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#20 0xb72d3b93 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
#21 0xb72d50b7 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#22 0xb72d5279 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#23 0xb788e652 in _gtk_tree_selection_internal_select_node ()
   from /usr/lib/libgtk-x11-2.0.so.0
#24 0xb789f139 in gtk_tree_view_scroll_to_cell ()
   from /usr/lib/libgtk-x11-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#25 0xb78ad686 in _gtk_tree_view_column_autosize ()
   from /usr/lib/libgtk-x11-2.0.so.0
#26 0xb77acb00 in _gtk_marshal_BOOLEAN__BOXED ()
   from /usr/lib/libgtk-x11-2.0.so.0
#27 0xb72c1fb9 in g_value_set_boxed () from /usr/lib/libgobject-2.0.so.0
#28 0xb72c379b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#29 0xb72d41e3 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
#30 0xb72d4e7f in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#31 0xb72d5279 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#32 0xb78c05f8 in gtk_widget_get_default_style ()
   from /usr/lib/libgtk-x11-2.0.so.0
#33 0xb77a5ef3 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#34 0xb77a70f7 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#35 0xb76307ea in _gdk_events_init () from /usr/lib/libgdk-x11-2.0.so.0
#36 0xb71c2802 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#37 0xb71c57df in g_main_context_check () from /usr/lib/libglib-2.0.so.0
#38 0xb71c5b89 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#39 0xb77a7574 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#40 0x0804b9cd in main (argc=134863328, argv=0x1) at tny-main.c:136

Attachments

Change History

04/12/07 20:10:15: Modified by pvanhoof

It's not really a deadlock. But the ui will lock until the retrieval of the first got completed.

05/04/07 10:59:50: Modified by pvanhoof

  • status changed from new to closed.
  • resolution set to fixed.

Fixed


Add/Change #43 (Deadlock in case of triggering a get_headers_async cancellation)




Change Properties
Action