Git扩展:直到昨天,一切都工作得很好。

但突然我得到这个错误时,我试图拉一些仓库使用git扩展

C:\Program Files\Git\bin\git.exe pull --progress "origin" 
Done
    0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68560000, RegionSize 0x390000, State 0x10000
C:\Program Files\Git\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0

我克隆的所有存储库都发生了这种情况。 但是,我的git bash运行良好。 我完全不知道发生了什么。知道为什么会这样吗?


当前回答

Cygwin使用持久共享内存部分,有时可能会损坏。这种情况的症状是一些Cygwin程序开始失败,但其他应用程序不受影响。由于这些共享内存段是持久的,在解决问题之前,通常需要重新启动系统来清除它们。

其他回答

这个错误在我的Windows机器上很少发生。我最终重启了机器,错误消失了。

Cygwin使用持久共享内存部分,有时可能会损坏。这种情况的症状是一些Cygwin程序开始失败,但其他应用程序不受影响。由于这些共享内存段是持久的,在解决问题之前,通常需要重新启动系统来清除它们。

只是想在这里分享我的经验。我在Windows 64位机器上为MTK平台进行交叉编译时遇到了同样的问题。MinGW和MSYS在构建过程中出现了这个问题。我通过修改msys-1.0.dll文件解决了这个问题。无论是rebase.exe还是系统重启对我都不起作用。

因为我的电脑上没有安装rebase.exe。我安装了cygwin64,并在里面使用了rebase.exe:

C:\cygwin64\bin\rebase.exe -b 0x50000000 msys-1.0.dll

虽然改基看起来很成功,但错误仍然存在。然后我在Cygwin64终端内运行rebase命令,得到一个错误:

$ rebase -b 0x50000000 msys-1.0.dll
rebase: Invalid Baseaddress 0x50000000, must be > 0x200000000

后来我试了几个地址,但都不行。所以我最终改变了msys-1.0.dll文件,它解决了这个问题。

克服恼人的堆错误的一个妙招是为命令行启用“遗留控制台”模式。它提供了对其他api的访问,这些api在后来的windows版本中受到了限制,因此内存分配工作得更好。

我也有同样的问题,在一些Windows 8.0崩溃和更新后,在msys git 1.9。我没有在我的路径中找到任何msys/git,所以我只是在windows本地用户环境设置中添加了它。它无需重新启动就能工作。

基本上,类似于roberb,但我没有任何git/msys在我的路径。

Btw:

我尝试使用rebase -b blablabla msys.dll,但有错误“ReBaseImage (msys-1.0.dll)失败,最后错误= 6” 如果你需要这个很快,没有时间调试,我注意到“Git Bash”。Git目录下的vbs成功启动bash shell。