Bug 3205

Summary: deadlock while checking the signature
Product: Claws Mail (GTK 2) Reporter: Mihai Dontu <mihai.dontu>
Component: OtherAssignee: users
Status: RESOLVED WORKSFORME    
Severity: normal    
Priority: P3    
Version: 3.9.3   
Hardware: PC   
OS: Linux   

Description Mihai Dontu 2014-06-06 10:03:12 UTC
I was trying to read an email from the Ubuntu security team and when I clicked on it in the message pane, at the bottom of the message viewer "Checking signature ..." appeared and the entire application froze. From what I can see, there's a lot of signal unsafe stuff being made in a signal handler:

#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x000000353c80a4dd in _L_lock_1109 () from /lib64/libpthread.so.0
#2  0x000000353c80a457 in __GI___pthread_mutex_lock (mutex=0x1ef9840) at ../nptl/pthread_mutex_lock.c:134
#3  0x0000003fcd08e9e1 in g_mutex_lock (mutex=mutex@entry=0x1efe330) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/glib/gthread-posix.c:209
#4  0x0000003fcd048318 in g_source_attach (source=0x20930ed0, context=0x1efe330) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/glib/gmain.c:1142
#5  0x0000003fcd04b3b3 in g_timeout_add_full (priority=0, interval=<optimized out>, function=0x4b4040 <clean_quit>, data=0x0, notify=0x0) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/glib/gmain.c:4593
#6  <signal handler called>
#7  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#8  0x000000353c80a4dd in _L_lock_1109 () from /lib64/libpthread.so.0
#9  0x000000353c80a457 in __GI___pthread_mutex_lock (mutex=0x1ef9840) at ../nptl/pthread_mutex_lock.c:134
#10 0x0000003fcd08e9e1 in g_mutex_lock (mutex=mutex@entry=0x1efe330) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/glib/gthread-posix.c:209
#11 0x0000003fcd048318 in g_source_attach (source=0x18dd0a40, context=0x1efe330) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/glib/gmain.c:1142
#12 0x0000003fcd04b5a0 in g_idle_add_full (priority=200, function=0x345221dbc0 <gdk_threads_dispatch>, data=0x41dda220, notify=0x345221db90 <gdk_threads_dispatch_free>)
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/glib/gmain.c:5382
#13 0x000000345283f3be in gtk_widget_queue_tooltip_query () from /usr/lib64/libgtk-x11-2.0.so.0
#14 0x0000003fcd817b58 in object_set_property (nqueue=<optimized out>, value=<optimized out>, pspec=<optimized out>, object=<optimized out>) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gobject.c:1378
#15 g_object_set_valist (object=0x21e2520, first_property_name=0x1f12660 "\300A\360\001", var_args=0x7fff313bbdd0) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gobject.c:2104
#16 0x0000003fcd8183f4 in g_object_set (_object=0x21e2520, first_property_name=0x34528c28e6 "tooltip-text") at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gobject.c:2214
#17 0x00000000004db399 in update_signature_noticeview ()
#18 0x00000000004db660 in update_signature_info ()
#19 0x00000000004db6b3 in update_signature_info ()
#20 0x00000000004dbb11 in mimeview_selected ()
#21 0x0000003fcd810114 in _g_closure_invoke_va (closure=0x1ef9840, closure@entry=0x21de4e0, return_value=0x80, return_value@entry=0x0, instance=0x55, instance@entry=0x2011900, args=0xffffffffffffffff, 
    args@entry=0x7fff313bf1c0, n_params=32479296, param_types=0x209304b0) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c:831
#22 0x0000003fcd82a5d7 in g_signal_emit_valist (instance=0x2011900, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fff313bf1c0)
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c:3215
#23 0x0000003fcd82af37 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c:3363
#24 0x000000345280d51b in gtk_tree_selection_select_path () from /usr/lib64/libgtk-x11-2.0.so.0
#25 0x000000345280d60d in gtk_tree_selection_select_iter () from /usr/lib64/libgtk-x11-2.0.so.0
#26 0x00000000004d94ba in icon_selected.isra ()
#27 0x00000000004d008c in messageview_show ()
#28 0x000000000055b8e8 in summary_display_msg_full ()
#29 0x000000000055c67a in summary_selected ()
#30 0x0000003fcd80fee5 in g_closure_invoke (closure=0x41948220, return_value=0x0, n_param_values=3, param_values=0x7fff313bf640, invocation_hint=0x7fff313bf5e0)
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c:768
#31 0x0000003fcd82248c in signal_emit_unlocked_R (node=node@entry=0x1f7fba0, detail=detail@entry=0, instance=instance@entry=0x1ef2610, emission_return=emission_return@entry=0x0, 
    instance_and_params=instance_and_params@entry=0x7fff313bf640) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c:3551
#32 0x0000003fcd82acd4 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=<optimized out>)
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c:3307
#33 0x0000003fcd82b48a in g_signal_emit_by_name (instance=0x1ef9840, detailed_signal=0x80 <error: Cannot access memory at address 0x80>) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c:3403
#34 0x000000000061c8b4 in select_row ()
#35 0x000000000055c126 in summary_select_node ()
#36 0x000000000056f910 in toolbar_next_unread_cb ()
#37 0x0000003fcd810114 in _g_closure_invoke_va (closure=0x1ef9840, closure@entry=0x20ef750, return_value=0x80, return_value@entry=0x0, instance=0x55, instance@entry=0x20bdc60, args=0xffffffffffffffff, 
    args@entry=0x7fff313c0c98, n_params=32479296, param_types=0x209304b0) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c:831
#38 0x0000003fcd82a5d7 in g_signal_emit_valist (instance=0x20bdc60, signal_id=<optimized out>, detail=0, var_args=0x7fff313c0c98) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c:3215
#39 0x0000003fcd82b48a in g_signal_emit_by_name (instance=0x1ef9840, detailed_signal=0x80 <error: Cannot access memory at address 0x80>) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c:3403
#40 0x0000003fcd810114 in _g_closure_invoke_va (closure=0x1ef9840, closure@entry=0x20ef570, return_value=0x80, return_value@entry=0x0, instance=0x55, instance@entry=0x20b6650, args=0xffffffffffffffff, 
    args@entry=0x7fff313c0fb0, n_params=32479296, param_types=0x209304b0) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c:831
#41 0x0000003fcd82a5d7 in g_signal_emit_valist (instance=0x20b6650, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fff313c0fb0)
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c:3215
#42 0x0000003fcd82af37 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c:3363
#43 0x000000345268c335 in gtk_real_button_released () from /usr/lib64/libgtk-x11-2.0.so.0
#44 0x0000003fcd810114 in _g_closure_invoke_va (closure=0x1ef9840, closure@entry=0x1f7d1a0, return_value=0x80, return_value@entry=0x0, instance=0x55, instance@entry=0x20b6650, args=0xffffffffffffffff, 
    args@entry=0x7fff313c1280, n_params=32479296, param_types=0x209304b0) at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gclosure.c:831
#45 0x0000003fcd82a5d7 in g_signal_emit_valist (instance=0x20b6650, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7fff313c1280)
    at /var/tmp/portage/dev-libs/glib-2.40.0/work/glib-2.40.0/gobject/gsignal.c:3215

I assume the signal is SIGCHLD, because there's a zombie claws-mail process waiting to be reaped by its parent (claws-mail). Probably it was tasked to check the signature. I see this in '.xsession-errors':

SSL Observatory: Cert submission failure 0: 
SSL Observatory: Planning to retry submission...
SSL Observatory: Cert submission failure 0: 
SSL Observatory: Planning to retry submission...

(claws-mail:5245): GLib-CRITICAL **: Source ID 4294967295 was not found when attempting to remove it

(claws-mail:5245): GLib-CRITICAL **: Source ID 66119 was not found when attempting to remove it
SSL Observatory: Cert submission failure 0: 
SSL Observatory: Retrying a submission...
SSL Observatory: Retrying a submission...
SSL Observatory: Retrying a submission...
Comment 1 Paul 2014-07-28 09:24:57 UTC
can you reproduce this with the latest release?
Comment 2 Mihai Dontu 2014-07-28 10:49:58 UTC
I have no reliable way to reproduce this, even with the version on which I first observed it. As far as I can tell, 3.10.1 is behaving OK and since I use it on a daily basis, I'll wait another month or so before I'll declare this issue fixed.