This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: GnuPG bug: --refresh-keys


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,
Max.

Attachment: signature.asc
Description: OpenPGP digital signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]