3.3.0: Possible regression in cygwin DLL (Win10); fixed in snapshot

Adam Dinwoodie adam@dinwoodie.org
Mon Nov 8 20:49:09 GMT 2021


On Mon, 8 Nov 2021 at 16:36, Andrey Repin via Cygwin <cygwin@cygwin.com> wrote:
>
> Greetings, ASSI!
>
> > Brian via Cygwin writes:
> >> 1.  Install git version 2.33.0 via the Cygwin installer (only the CLI).
> >> 2.  Download the GCM-Core 2.0.567 release zip file (
> >> https://github.com/microsoft/Git-Credential-Manager-Core/releases/) and
> >> extract somewhere.
> >> 3.  Copy all *.exe and *.dll files to your Cygwin /usr/libexec/git-core/
> >> directory.
>
> > This is wrong on so many levels that I don't even know where to start.
>
> Well, then start somewhere?

This is mixing Cygwin and non-Cygwin binaries in a way that will make
debugging problems difficult. Applications compiled for Cygwin have
different styles of interfaces to those compiled for native Windows,
as they're using Cygwin's approximations to Linux APIs, so it's not
safe to rely on them working together seamlessly.

> >> Please let me know if there are any other steps you think might be missing.
>
> > You either need to have a proper Cygwin package and/or wrappers to put
> > into Cygwin that use the Windows executables.
>
> The git itself is a wrapper in this case.

Cygwin Git is not inherently an appropriate wrapper to allow Cygwin
applications to seamlessly communicate with non-Cygwin Windows
applications. Naively mixing the two will work sometimes, but it's
reasonable to expect problems due to, for example, the fact that a
native Windows application and a Cygwin application will have very
different ideas about the absolute path to a given file.

In this case, it looks like the change of behaviour was an unintended
side-effect of changes made to the Cygwin DLL, and the folk working on
the DLL have found a way to get things working as expected for Brian.
Nonetheless I agree with Achim, and in general I wouldn't expect the
steps Brian was taking to work reliably anyway. I would expect that,
to get things working within Cygwin's design paradigms, one would need
to either (a) compile GCM as a Cygwin application, (b) not use Cygwin
at all and instead swap to Git for Windows, or (c) write a shim
application that uses native Windows APIs to talk to GCM and
*nix-style Cygwin APIs to talk to Cygwin Git.


More information about the Cygwin mailing list