Search code examples
gitmsys2

git-remote-https cannot fork msys-unistring-2.dll loaded to different address


I have git on my Windows 10 machine via MSYS2. From the MSYS2 terminal, I have been having no problem pushing commits to my bitbucket repository.

Now, all of a suddent, I am receiving the following error:

$ git push origin master
Password for 'https://[email protected]':
      1 [main] git-remote-https 1747 child_info_fork::abort: \?? 
\C:\MSYS2-32\usr\bin\msys-unistring-2.dll: Loaded to different address: parent(0x990000) != child(0xF80000)
error: cannot fork() for send-pack: Resource temporarily unavailable
error: failed to push some refs to 'https://[email protected]/NeomerArcana/myrepo.git'

I read about issues with git and ASLR. So I disabled ASLR on the above .exe as well as mintty.exe and git.exe. This didn't work so I disabled ASLR system-wide. This still didn't work. I killed the git, created a new repository and started a new git with init. Everything worked fine, right up until I tried pushing commits to the remote site, and I get the same error again.

Any ideas?


Solution

  • Are you running the 32-bit version of MSYS2? There seems to be a known error when it loads DLL files in a way so that they overlap:

    https://sourceforge.net/p/msys2/tickets/74/

    They write that you should try to:

    1. Close all MSYS2 processes
    2. Run autorebase.bat
    3. Start MSYS2 again

    One commenter explains it like this:

    All MSYS2 32-bit DLLs must be auto-rebased as a group to ensure the don't overlapping in address space.

    Any attempt to two clashing MSYS2 32-bit DLLs loaded at once will result in the failure you have seen.

    In the end, they recommend using the 64-bit version of MSYS2, as that one doesn't have any of these problems.