-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Collection.unlock() blocks indefinitely #33
Comments
Hi!
It looks like gnome-keyring opened a prompt dialog and waits for you to type a password (or at least it thinks so). Do you see any dialogs when it happens? |
Just wanted to say I had this same issue on an Ubuntu server and fixed it by configuring the keyring to automatically unlock. |
@mitya57 some of the Poetry users have been experiencing this issue as well. I have been trying to recreate conditions to reproduce the issue. For context, I am using GNOME Shell and gnome-keyring is installed and working as expected. I was able to narrow down reproduction to the following sequence.
This causes no dialogue to appear, and the python session hangs - obviously waiting for the user to interact with a dialogue that never gets displayed. What I also found interesting was that if I skipped (2, 3), the same (4) will trigger the dialogue successfully and dismissing it without unlocking and retrying (4) still shows the dialogue. Any insights into debugging the root cause will be helpful. If it helps, here are the dbus events for when the unlock get stuck. dbus-events.log
method call time=1736459117.222271 sender=:1.1247 -> destination=org.freedesktop.DBus serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
string "sender='org.freedesktop.secrets',interface='org.freedesktop.Secret.Prompt'"
method return time=1736459117.222275 sender=org.freedesktop.DBus -> destination=:1.1247 serial=4294967295 reply_serial=2
method call time=1736459117.222278 sender=:1.1247 -> destination=org.freedesktop.secrets serial=3 path=/org/freedesktop/secrets/aliases/default; interface=org.freedesktop.DBus.Properties; member=Get
string "org.freedesktop.Secret.Collection"
string "Label"
method return time=1736459117.222282 sender=:1.1081 -> destination=:1.1247 serial=229 reply_serial=3
variant string "Login"
method call time=1736459117.222286 sender=:1.1247 -> destination=org.freedesktop.secrets serial=4 path=/org/freedesktop/secrets/aliases/default; interface=org.freedesktop.DBus.Properties; member=Get
string "org.freedesktop.Secret.Collection"
string "Locked"
method return time=1736459117.226750 sender=:1.1081 -> destination=:1.1247 serial=230 reply_serial=4
variant boolean true
method call time=1736459117.227217 sender=:1.1247 -> destination=org.freedesktop.secrets serial=5 path=/org/freedesktop/secrets; interface=org.freedesktop.Secret.Service; member=Unlock
array [
object path "/org/freedesktop/secrets/aliases/default"
]
method return time=1736459117.228304 sender=:1.1081 -> destination=:1.1247 serial=231 reply_serial=5
array [
]
object path "/org/freedesktop/secrets/prompt/u21"
method call time=1736459117.228706 sender=:1.1247 -> destination=org.freedesktop.secrets serial=6 path=/org/freedesktop/secrets/prompt/u21; interface=org.freedesktop.Secret.Prompt; member=Prompt
string ""
method return time=1736459117.228923 sender=:1.1081 -> destination=:1.1247 serial=232 reply_serial=6 |
Hi @abn! According to your I have a few questions that will maybe help shed light on this:
Footnotes
|
Thanks for responding @mitya57. I have some additional updates I hadn't posted yet as I am still digging into the issue. Based on what I know now, it makes sense you could not reproduce it based on my previous information. So, some context is in order. Poetry uses What I discovered since my last post;
This is likely why you were unable to reproduce the issue. What seems to be happening in my case, was that Poetry spawned N concurrent requests to the Based on this, I am thinking the issue largely is with how Poetry uses thread executor with Regarding an asynchronous call, I do not think this will help in our case since the call is made via For completeness, responses to your questions below.
My takeaway right now is that for whatever reason gnome-keyring gives up on trying to present the prompt and/or crashes somewhere. This could be a side-effect of how Poetry triggered multiple simultaneous requests. The best thing I can do is the following:
I would appreciate your insights here. Additionally, how does
|
Environment
operating system: Debian
Python version: 3.9
SecretStorage==3.3.1
Issue
I am trying to get my keyring configuration via this command:
keyring get https://upload.pypi.org/legacy/ <my-username>
.However, this command blocks indefinitely. Terminating the command returns this traceback:
It seems
Collection.unlock()
is blocking indefinitely. What is causing this, and how can this be fixed?The text was updated successfully, but these errors were encountered: