几天前,每次我在存储库中启动Git GUI时,它会显示这个可怕的错误消息,并在我单击OK后退出:
prepare-commit-msg hook failed:
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68560000, RegionSize 0x260000, State 0x10000
C:\Program Files (x86)\Git\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
You must correct the above errors before committing.
它只发生在Git GUI上,只有在存储库(旧的或新创建的)中才会发生。 Git Bash中的常用命令包括提交工作正常。
使用较新的软件包卸载并重新安装(仅更改次要版本)并未解决此问题。它仍然发生在旧的存储库以及新创建的存储库中。
在一台干净的机器上,这个问题不能重现,所以我想这是我的盒子上的东西,但我不记得安装任何有趣的东西。我确实记得很长一段时间后关掉我的盒子,所以也许有些Windows Update会触发这个 - 这也可以解释为什么其他机器不会受到影响 - 这是自上次Win更新后的2-3个月。
任何想法如何阐明这一点? (因为我只能在一台机器上看到它,在我知道这不是我/其他应用程序的错误之前我不想将它提交给官方跟踪器...)
更新:
如果删除或重命名钩子脚本,它是否有效?
很有趣,但钩子脚本实际上根本不存在(没有钩子脚本 present - .git \ hooks中只有* .sample文件。甚至没有其他地方(git程序 dir等。)
跟踪它,以便您知道它运行的命令 - 来自git-bash run
git gui --trace
可悲的是,这不会向shell输出任何内容。行为是一样的。
也许在那里得到gdb。
我试过但是gdb没有输出任何有用的东西。但是,我没有任何经验
与GDB,我可能做错了。我得到一个MinGW's gdb,从命令运行它
以git.exe作为参数提示,然后运行run gui
。 gdb没有输出任何内容
有趣:
(gdb) run gui
Starting program: C:\Program Files (x86)\Git\bin\git.exe gu
[New Thread 8264.0x1ce4]
[New Thread 8264.0x394]
[Inferior 1 (process 8264) exited with code 01]
(gdb)
但我几乎可以肯定我做错了,所以建议非常受欢迎:)
确保您没有安装cygwin,或者至少没有安装cygwin 路径
我确实安装了cygwin(就像我以前一样,在git崩溃之前)。来自Cygwin我只 在路径中有一些* .bat启动器和一些* .dll文件,但我已经检查过了 ProcMon,它没有触及它们,即使我从路径中删除它我仍然得到 同样的崩溃。
答案 0 :(得分:10)
这对我有用。
http://www.trinitycore.org/f/topic/5194-msysgit-couldnt-reserve-space-for-cygwins-heap/
解决方案:
更改msysgit.dll的基地址
c:\msysgit\bin>rebase.exe -b 0x50000000 msys-1.0.dll
答案 1 :(得分:9)
我也有这个问题
我用
解决了这个问题http://support.code-red-tech.com/CodeRedWiki/VirtualAllocPointerNull
显然这是由某些功能引起的,并且替换dll会为大多数人修复它
如果网站关闭 -
虚拟分配指针为空
很少,运行make可能会导致类似这样的错误:
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x71110000, RegionSize 0x350000, State 0x10000
\msys\bin\make.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
这是一个影响极少数客户的问题,并且取决于他们同时运行的其他应用程序。
这是由我们用来为产品提供构建环境的MSYS二进制文件中的一个功能引起的。
如果发生这种情况,您可以替换该文件 \ MSYS \ BIN \ MSYS-1.0.dll 与附加的zipfile中的文件。 msys-1.0.zip
请注意,这不能解决问题,而是移动DLL基地址。 不幸的是,这个替换DLL也可能发生错误,同样取决于正在运行的其他应用程序。
答案 2 :(得分:3)
在另一次Windows Update和操作系统重启后,问题就消失了。
似乎更新之一引入了另一个修复的错误。或者它可以 成为一个"月相"错误。
我想我们永远不会知道......
答案 3 :(得分:3)
我也碰到了这个,这是因为MacType干扰了bash.exe和msys1.0.dll。 (MacType是Windows的字体平滑程序,试图模拟OS-X样式的字体光栅化。)仅在我需要的程序上启用MacType,而不是在试图加载bash.exe的Console2窗口上修复了问题。 / p>
也许这会帮助其他人修复错误。
答案 4 :(得分:3)
我遇到了同样的问题。对我有用的解决方案几乎与XandrGuard提出的解决方案相同。
c:\msysgit\bin>rebase.exe -b 0x50000000 msys-1.0.dll
此处解释了解决方案http://jakob.engbloms.se/archives/1403
对我而言,解决方案略有不同。这是
C:\Program Files (x86)\Git\bin>rebase.exe -b 0x50000000 msys-1.0.dll
希望它可以帮助那些试图解决问题的人
答案 5 :(得分:2)
在Win64计算机上安装1.8.0后,我遇到了同样的问题。我通过删除1.8.0并安装1.7.11
解决了这个问题答案 6 :(得分:1)
只需搜索msys-1.0.dll
驱动器上的所有C:\
,然后将Git使用的设备放在首位。
就我而言,我只是改变了以下的顺序:
C:\prgs\Gow\Gow-0.7.0\bin\msys-1.0.dll
C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\msys-1.0.dll
通过在我的C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\
中首先显示Git路径%PATH%
,错误消息消失了!
无需重启或甚至更改DOS会话
在该DOS会话中更新%PATH%
后,git命令就可以正常工作。