GNOME Bugzilla – Bug 606902
Infinite loop in gkr_operation_block() due to no notification from D-Bus.
Last modified: 2019-02-22 11:46:06 UTC
I filed this in bugzilla.redhat.com and was told to move it upstream: I have issues with the keyring password dialog opening again and again and in the end it seems to just hang. Possibly some memory management issue in the keyring library or something like that.
+ Trace 220071
Thread 288 (Thread 0xb19ffb70 (LWP 701))
Downstream bugreport is here https://bugzilla.redhat.com/show_bug.cgi?id=554257
Upping severity on this as it forces me to kill evolution from time to time in addition to eating up 100% of one of my intel cores.
Still seeing this here. I also seem to remember seeing someone blogging about the problem recently and the comments said to delete default.keyring to help fix the problem. I don't have default.keyring here at all so that's not related to my problem at least.
This sounds like a classic deadlock. libgnome-keyring is trying to use dbus inside of gnome_keyring_is_available, but something in evolution has it locked. Could you please include the backtraces of all the threads inside of the hung process. Thanks!
Unfortunately I can't reproduce this any more after upgrading from rawhide a few times :-/ I'll provide the information as soon as it happens again.
This seems to be an ongoing problem in the upcoming Ubuntu 10.04 - I can't use evolution anymore due to this bug. I found quite a few traces of the problem here in this bugreport - maybe these are of some help: https://bugzilla.gnome.org/show_bug.cgi?id=595421
Created attachment 157444 [details] [review] Fix I am wondering why this issue did not happen on someone else's environment.
Comment on attachment 157444 [details] [review] Fix Ooop! sorry. The patch is totally wrong!
Created attachment 157447 [details] [review] Workaround After investigate a bit further. DBusPendingCall seems to be completed without calling DBusPendingCallNotifyFunction. This patch is a workaround to avoid infinite loop in gkr_operation_block().
Seems to be D-Bus bug. https://bugs.freedesktop.org/show_bug.cgi?id=857 https://bugs.freedesktop.org/show_bug.cgi?id=19796
Thanks for doing the investigation Hiroyuki. I was poking around in this area myself, but since I couldn't duplicate the problem, I couldn't figure out what would be causing this behavior (ie: a DBusPendingCall completing without calling the callback). Committed a similar workaround fix, which also closes another possible race condition in the same area. commit 942ff4eae19732d9f5fd0d549385a7f2d9842444 Author: Stef Walter <stef@memberwebs.com> Date: Fri Apr 9 18:39:38 2010 +0000 Workaround for problem with endless loop during blocking operations. Research done by Hiroyuki Ikezoe This is due to a bug in libdbus where the pending call is completed without the relevant callback being called when used in certain threading situations. Fixes bug #606902
*** Bug 613399 has been marked as a duplicate of this bug. ***
*** Bug 611584 has been marked as a duplicate of this bug. ***
*** Bug 612202 has been marked as a duplicate of this bug. ***