Seahorse freezes (100% CPU) when displaying GPG key properties
@genodeftest
Submitted by Christian Stadelmann Link to original bug (#733104)
Description
Steps to reproduce (this does not always work, it depends much on your own gpg database. I can always reproduce this on one PC since today):
- start seahorse
- go to GnuPG
- choose some contact (does not work with my own one and several others but with the one of Erinn Clark (ID 0x63FEE659)
- open properties
Result: Seahorse starts a lot (20…50) child processes running gpg, most of them exit in less than 2 seconds. Seahorse gets stuck at 100% CPU
This is the backtrace (trapped process while stuck at 100%):
Program received signal SIGTRAP, Trace/breakpoint trap.
0x00000031f9aa4827 in gtk_tree_row_ref_deleted (refs=0x0, path=0x31159a0) at gtktreemodel.c:2117
2117 if (reference->path)
Missing separate debuginfos, use: debuginfo-install glib-networking-2.38.2-1.fc20.x86_64 libmodman-2.0.1-7.fc20.x86_64 libproxy-0.4.11-8.fc20.x86_64 libstdc++-4.8.3-1.fc20.x86_64
(gdb) bt
#0 0x00000031f9aa4827 in gtk_tree_row_ref_deleted (refs=0x0, path=0x31159a0) at gtktreemodel.c:2117
#1 0x00000031f9aa492a in row_deleted_marshal (closure=<optimized out>, return_value=<optimized out>,
n_param_values=<optimized out>, param_values=<optimized out>, invocation_hint=<optimized out>,
marshal_data=<optimized out>) at gtktreemodel.c:528
#2 0x0000003f6b010298 in g_closure_invoke (closure=closure@entry=0x23739e0,
return_value=return_value@entry=0x0, n_param_values=2,
param_values=param_values@entry=0x7fff9e822ba0,
invocation_hint=invocation_hint@entry=0x7fff9e822b40) at gclosure.c:777
#3 0x0000003f6b021b87 in signal_emit_unlocked_R (node=node@entry=0x2373a10, detail=detail@entry=0,
instance=instance@entry=0x2743180, emission_return=emission_return@entry=0x0,
instance_and_params=instance_and_params@entry=0x7fff9e822ba0) at gsignal.c:3516
#4 0x0000003f6b02a0f2 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>,
detail=<optimized out>, var_args=var_args@entry=0x7fff9e822d30) at gsignal.c:3330
#5 0x0000003f6b02a3af in g_signal_emit (instance=instance@entry=0x2743180, signal_id=<optimized out>,
detail=detail@entry=0) at gsignal.c:3386
#6 0x00000031f9aa5108 in gtk_tree_model_row_deleted (tree_model=tree_model@entry=0x2743180,
path=path@entry=0x31159a0) at gtktreemodel.c:1867
#7 0x00000031f9ab5321 in gtk_tree_store_remove (tree_store=tree_store@entry=0x2743180,
iter=iter@entry=0x7fff9e822e80) at gtktreestore.c:1230
#8 0x00000031f9ab5489 in gtk_tree_store_clear_traverse (node=0x2889cc0, store=store@entry=0x2743180)
at gtktreestore.c:1856
#9 0x00000031f9ab545f in gtk_tree_store_clear_traverse (node=0x2827ca0, store=store@entry=0x2743180)
at gtktreestore.c:1839
#10 0x00000031f9ab6808 in gtk_tree_store_clear (tree_store=tree_store@entry=0x2743180)
at gtktreestore.c:1884
#11 0x000000000044665b in do_trust (swidget=swidget@entry=0x22bc680)
at seahorse-pgp-key-properties.c:1831
#12 0x000000000044756c in key_notify (object=<optimized out>, swidget=0x22bc680)
at seahorse-pgp-key-properties.c:1879
#13 0x0000003f6b010298 in g_closure_invoke (closure=0x27c3ec0, return_value=return_value@entry=0x0,
n_param_values=2, param_values=param_values@entry=0x7fff9e823160,
invocation_hint=invocation_hint@entry=0x7fff9e823100) at gclosure.c:777
#14 0x0000003f6b02235d in signal_emit_unlocked_R (node=node@entry=0x20e7d10, detail=detail@entry=1254,
instance=instance@entry=0x25ebdd0, emission_return=emission_return@entry=0x0,
instance_and_params=instance_and_params@entry=0x7fff9e823160) at gsignal.c:3586
#15 0x0000003f6b02a0f2 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>,
detail=<optimized out>, var_args=var_args@entry=0x7fff9e8232f0) at gsignal.c:3330
#16 0x0000003f6b02a3af in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>,
detail=<optimized out>) at gsignal.c:3386
#17 0x0000003f6b014945 in g_object_dispatch_properties_changed (object=0x25ebdd0, n_pspecs=0,
pspecs=0x20) at gobject.c:1047
#18 0x0000003f6b014202 in g_object_notify_queue_thaw (object=object@entry=0x25ebdd0,
nqueue=nqueue@entry=0x30499a0) at gobject.c:292
#19 0x0000003f6b017f4d in g_object_set_valist (object=object@entry=0x25ebdd0,
first_property_name=first_property_name@entry=0x49d940 "pubkey",
var_args=var_args@entry=0x7fff9e8235c0) at gobject.c:2132
#20 0x0000003f6b018774 in g_object_set (_object=_object@entry=0x25ebdd0,
first_property_name=first_property_name@entry=0x49d940 "pubkey") at gobject.c:2232
#21 0x0000000000464261 in add_key_to_context (key=0x2b12f00, self=0x2198f00)
at seahorse-gpgme-keyring.c:192
#22 on_idle_list_batch_of_keys (data=<optimized out>) at seahorse-gpgme-keyring.c:297
#23 0x0000003f6a8492a6 in g_main_dispatch (context=0x20f8a90) at gmain.c:3066
#24 g_main_context_dispatch (context=context@entry=0x20f8a90) at gmain.c:3642
#25 0x0000003f6a849628 in g_main_context_iterate (context=context@entry=0x20f8a90,
block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3713
#26 0x0000003f6a8496dc in g_main_context_iteration (context=0x20f8a90, context@entry=0x0,
may_block=may_block@entry=1) at gmain.c:3774
#27 0x00000037c209c954 in g_application_run (application=0x20f5180, argc=argc@entry=1,
argv=argv@entry=0x7fff9e8239c8) at gapplication.c:1635
#28 0x0000000000428a00 in main (argc=1, argv=0x7fff9e8239c8) at seahorse-main.c:63
I also saw a possibly related freeze in the while loop starting in gtktreemodel.c:2056 https://git.gnome.org/browse/gtk+/tree/gtk/gtktreemodel.c?id=c3945d506da5d8aefdb960f4d98cafdb83dc047e&h=gtk-3-10#n2056 but didn't manage to save a backtrace.
Version: 3.10.x