Bug 3205 - deadlock while checking the signature
Summary: deadlock while checking the signature
Status: RESOLVED WORKSFORME
Alias: None
Product: Claws Mail (GTK 2)
Classification: Unclassified
Component: Other (show other bugs)
Version: 3.9.3
Hardware: PC Linux
: P3 normal
Assignee: users
URL:
Depends on:
Blocks:
 
Reported: 2014-06-06 10:03 UTC by Mihai Dontu
Modified: 2014-07-28 10:59 UTC (History)
0 users

See Also:


Attachments

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.

Note You need to log in before you can comment on or make changes to this bug.