GnuPG bug: --refresh-keys

Reini Urban rurban@x-ray.at
Mon Aug 7 20:37:00 GMT 2006


Volker Quetschke schrieb:
> Max Bowsher wrote:
>> Max Bowsher wrote:
>>> When running 'gpg --refresh-keys', the second updated key results in:
>>>
>>> gpg: renaming `/home/max/.gnupg/pubring.gpg' to
>>> `/home/max/.gnupg/pubring.gpg~' failed: Permission denied
>>> gpg: error writing keyring `/home/max/.gnupg/pubring.gpg': file rename error
>>> gpg: key XXXXXXXX: "...." 28 new signatures
>>> gpg: error reading `[stream]': file rename error
>>>
>>>
>>> Given that:
>>>  * this happens for the *second* updated key
>>>
>>>  * having another process running at the same time, rapidly moving away
>>> any new pubring.gpg~ files avoids the error
>>>
>>>  * it is presumably Cygwin-specific
>>>
>>> it seems extremely likely that gnupg has a file descriptor leak, such
>>> that when the second key is processed, gnupg still has an open file
>>> descriptor on the file pubring.gpg~ when it attempts to overwrite it by
>>> renaming another file onto that name. Windows then objects.
>> Replying to my own mail...
>>
>> GPG for some reason tries to cache opened fds for re-use. I suggest
>> disabling this caching for Cygwin. The appropriate code to tweak is in
>> util/iobuf.c:fd_cache_close(). I changed the condition of the first if
>> statement there to always be true, and the problem I reported goes away.
>>
>> Please integrate this into the Cygwin packages.
> 
> Thanks for tracking this down Max. It's also time for a new package
> with the newer upstream version.

Did you get gpg-agent working?
My private gnupg-1.9.20-1 fails. Others reported that also.

$ eval `gpg-agent --daemon`

$ gpg-agent
gpg-agent: gpg-agent running and available

and on signing gpg -s <file>:
can't connect to `/tmp/gpg-H2cOWD/S.gpg-agent': Connection refused
gpg: can't connect to `/tmp/gpg-H2cOWD/S.gpg-agent': connect failed


I've got libassuan-0.6.10-1 and libksba-0.9.16-1 at my setup repository, 
which might help you.
The pth libs are missing:

src/gnupg-1.9.20/tools/Makefile.am
@@ -60,7 +60,7 @@
  gpg_connect_agent_SOURCES = gpg-connect-agent.c no-libgcrypt.c
  gpg_connect_agent_LDADD = ../jnlib/libjnlib.a \
                            ../common/libcommon.a ../gl/libgnu.a \
-                          $(LIBASSUAN_LIBS) $(GPG_ERROR_LIBS) $(LIBINTL)
+                          $(LIBASSUAN_LIBS) $(GPG_ERROR_LIBS) 
$(LIBINTL) $(PTH_LIBS)

  gpgkey2ssh_SOURCES = gpgkey2ssh.c
  gpgkey2ssh_CFLAGS = $(LIBGCRYPT_CFLAGS) $(GPG_ERROR_CFLAGS)
-- 
Reini Urban
http://phpwiki.org/  http://murbreak.at/
http://helsinki.at/  http://spacemovie.mur.at/

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list