Problem
On Linux, Git remote operations (fetch, pull, push) in JetBrains IDEs occasionally hang indefinitely until the IDE is restarted. The IDE itself remains responsive — only the specific Git operation never completes. After an IDE restart, remote Git operations work normally again until the issue reoccurs.
Local Git operations (log, status, commit, checkout) continue to work while remote operations are stuck.
Cause
The IDE retrieves Git/GitHub credentials through the Linux native Secret Service (libsecret / GNOME Keyring / Seahorse). When the native keyring service stops responding, the credential lookup call blocks in native code and never returns, leaving every subsequent Git remote operation waiting indefinitely.
The hang is visible in thread dumps as a worker thread blocked in secret_password_lookup_sync:
"DefaultDispatcher-worker-XX" prio=0 tid=0x0 nid=0x0 runnable
java.lang.Thread.State: RUNNABLE
(in native)
at com.sun.jna.Native.invokePointer(Native Method)
at com.intellij.credentialStore.$Proxy224.secret_password_lookup_sync(Unknown Source)
at com.intellij.credentialStore.SecretCredentialStore$Companion.pingService(linuxSecretLibrary.kt:60)
at com.intellij.credentialStore.SecretCredentialStore$Companion.create(linuxSecretLibrary.kt:47)
at com.intellij.credentialStore.LinuxCredentialStoreFactory.create(NativeCredentialStoreWrapper.kt:135)
at com.intellij.ide.passwordSafe.impl.PasswordSafeImplKt.createPersistentCredentialStore(PasswordSafeImpl.kt:256)
at com.intellij.ide.passwordSafe.impl.BasePasswordSafe.computeProvider(PasswordSafeImpl.kt:205)
at com.intellij.ide.passwordSafe.impl.BasePasswordSafe.get(PasswordSafeImpl.kt:109)
The root cause is on the OS side — the IDE cannot recover from an unresponsive native keyring without restarting.
Resolution
To avoid the dependency on the native Linux keyring, switch the IDE to a different credential storage backend.
Option 1: Use KeePass (built-in, no extra setup)
KeePass is bundled with the IDE — no external installation or configuration is required.
- Open Settings (Ctrl+Alt+S) | Appearance & Behavior | System Settings | Passwords.
- Select In KeePass.
- Click OK.
- Re-enter Git/GitHub credentials when prompted on the next remote operation.
See Passwords settings for details.
Option 2: Use a Git credential helper
Delegate credential storage to Git itself. This requires a Git credential helper to be installed and configured at the OS level — Ubuntu does not ship one by default. See Git Credential Storage for the available helpers (libsecret, cache, store).
- Install and configure a Git credential helper on the system.
- In the IDE, open Settings (Ctrl+Alt+S) | Version Control | Git.
- Under Update, enable Use credential helper.
- Click OK.
After applying either option, restart the IDE and verify that Git remote operations complete normally.
Comments
0 comments
Please sign in to leave a comment.