检测到Cygwin/Git错误cygheap碱基错配

Joh*_*rum 48 git ssh cygwin

我已经安装了两个带有最新版本的cygwin和git的Windows服务器,并且我正在尝试将git存储库从S1克隆到S2.我可以使用RSA密钥成功地从S2跳到S1,但是当我这样做时:git clone"ssh:// root @ S1/path/to/my/repo"它会抛出这个输出:

    Cloning into /cygdrive/c/program files/apache software foundation/apache2.2/htdocs/myfolder...
    2 [main] git 2004 C:/cygwin/lib/git-core/git.exe *** fatal error - cygheap base mismatch detected - 0x61242860/0x6123790.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search fro cygwin1.dll using the WIndows Start->Find/Search facility and delete all bu the most recent version.  The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distrubtion. Rebooting is also suggested if you are unable to find another cygwin DLL.  

--5 more errors like that one --

remote: Counting objects: 3275, done.
remote: Compressing oobjects: 100% (3106/3106), done.
fatal: write error: Broken pipe
Run Code Online (Sandbox Code Playgroud)

所以我遵循了这些指示,但没有运气.有什么建议?

Ser*_*nci 52

我有同样的问题.

我刚刚重新启动我的电脑,它再次运行.

找到问题的原因并没有帮助,但至少你可以继续工作.

  • 我起初嘲笑这个回应.然后我放弃了,做了.我现在又回来了.所以现在我要投票了. (13认同)
  • 这并没有真正回答这个问题.如果您有其他问题,可以通过单击[提问](http://stackoverflow.com/questions/ask)来询问.一旦你有足够的[声誉],你也可以[添加赏金](http://stackoverflow.com/help/privileges/set-bounties)来吸引更多关注这个问题(http://stackoverflow.com/help/什么声誉). - [来自评论](/ review/low-quality-posts/11288590) (4认同)
  • 有时这是最简单的事情......因此,座右铭"当有疑问时,重启!" (4认同)
  • 同样,我也不相信,但果然,重启工作正常.有另一个upvote!毕竟,大多数登陆这个问题的人对"如何修复它"更感兴趣?而不是"是什么导致它?" (4认同)

shi*_*or7 24

编辑:我找到了解决方案.

TL; DR:转到GitHub AppData文件夹并删除PortableGit文件夹,然后重新启动GitHub

  1. 关闭GitHub
  2. 导航到GitHub AppData文件夹: C:\Users\[username]\AppData\Local\GitHub
  3. 删除以PortableGit字母开头的文件夹,并以随机的字母和数字字符串结尾
  4. 重启GitHub.它会重新提取dll,问题应该修复!

(原文"回答") 我尝试了很多东西,我不知道最终到底有什么用处.我重新启动GitHub,重新启动计算机,卸载并重新安装GitHub,卸载了我最近安装但最终不需要的其他几个程序,删除了AppData\Local目录中的GitHub文件夹,下载并安装了cygwin,可能还有其他一些东西我忘记了.

最后一次尝试是在文件资源管理器中找到所有cygwin1.dll文件,并将它们重命名为cygwin1x.dll,然后重新启动计算机.在我这样做之后,它再次起作用.

我在这里猜测,但我要说下载和安装cygwin,然后重新启动我的电脑就可以了.

  • @Dom它可能还需要重新启动Windows.我也有64位Windows 10. (8认同)
  • 不幸的是没有为我工作.我在Windows 10,64bit上 (2认同)

Whi*_*awk 22

没有Cygwin,没有GitHub

我最近才开始体验这一点,上面的答案都没有适用于我的情况 - 我没有安装Cygwin或GitHub.

相反,在我的情况下,Windows安全功能,地址空间布局随机化或ASLR创建了此问题.对于未标记自身兼容的程序,默认情况下处于关闭状态.
但是,我为所有程序启用了ASLR以增加安全性.缺点是git命令现在不起作用.

解决方案是为git可执行文件排除ASLR.因为它们中有很多,我不得不使用PowerShell作为管理员:

Get-Item -Path "C:\Program Files\Git\usr\bin\*.exe" | %{ Set-ProcessMitigation -Name $_.Name -Disable ForceRelocateImages }
Run Code Online (Sandbox Code Playgroud)

  • @ZJR`Set-ProcessMitigation:术语'Set-ProcessMitigation'不被识别为cmdlet,函数,脚本文件或可操作程序的名称.检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试 (3认同)
  • 我真的要谢谢你 这让我发疯。我在ASLR上遇到了整个msys发行版。`Get-Item -Path“ C:\ msys64 \ usr \ bin \ *。exe” | %{Set-ProcessMitigation -Name $ _。Name -Disable ForceRelocateImages}`解决了它。 (2认同)
  • 或者甚至更好`Get-ChildItem -Path C:\msys64 -Recurse -Include *exe | %{ Set-ProcessMitigation -Name $_.Name -Disable ForceRelocateImages }` (2认同)

小智 10

您在问题陈述中没有提到这一点,但我假设您运行的是64位版本的Windows.Cygwin在64位Windows上运行时遇到问题,特别是对于大型程序.我相信这是由于cygwin1.dll支持库中的内存管理问题.看起来它正在做出不可支持的假设,它将永远地并且总是被映射到每个进程中的相同地址,因此它可以在系统范围的全局变量中保持特定于进程的事物(如堆地址).

在我丰富的空闲时间里,我一直在努力追踪有问题的位.在此期间,您可以尝试重新定位cygwin1.dll本身.请注意,这是一个非常重要的事情,比它需要的更复杂 - 甚至比重新设置其他所有事情都要复杂.


Geo*_*sch 9

对我来说,原因是,git没有通过cygwin安装,虽然从git-scm定期下载.一旦我运行了cygwin设置,添加了git,它运行得很好.

  • 这和我的问题一样.从git-scm卸载Git然后从Cygwin中安装Git解决了这个问题. (3认同)

Kei*_*son 6

你用其他任何命令得到这个错误吗?用git --version

尝试重新运行Cygwin setup.exe并重新安装cygwin1.dll(包装是"cygwin",在"Base"下)和你的git包("devel"下的"git"包)并重新启动.