因为几天前,每当我在存储库中启动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.
它只在GUI中发生,并且只在存储库(旧的或新创建的)中发生。Git Bash中的常见命令,包括提交工作良好。
取消安装和重新安装较新的软件包(仅轻微的版本更改)没有消除问题。这种情况仍然发生在旧存储库和新创建的存储库中。
在一台干净的机器上,这个问题不会重现,所以我想这是我的盒子上的东西,但我不记得安装了什么有趣的东西。我确实记得很长一段时间后关闭了我的机器,所以可能是一些Windows Update触发了这一点--这也解释了为什么另一台机器没有受到影响--自上次Win更新以来已经有2-3个月了。
有什么办法让我们明白这一点吗?(因为我只能在单机上看到它,在我知道这不是我/其他应用程序的错之前,我不想把它提交给官方跟踪器。)
在第一个注释之后更新:
很有趣,但钩子脚本实际上根本不存在(没有钩子脚本存在-.git\hooks中只有.git\hooks文件)。甚至在其他地方也没有(git程序dir等)
git gui --trace
运行了哪些命令。遗憾的是,这并没有将任何内容输出到shell。行为是一样的。
我试过了,但是gdb没有输出任何有用的东西。但是,我没有使用GDB的经验,我可能做错了。我得到了一个MinGW's gdb,在命令提示符下以git.exe作为参数运行它,然后运行run gui
。gdb没有输出任何有趣的内容:
(gdb)运行gui启动程序: C:\Program (x86)\Git\bin\git.exe gu新线程8264.0x1ce4 与代码01一起退出的低级1(进程8264)
但我几乎肯定我做错了,所以建议是非常受欢迎的:)
我确实安装了cygwin (和以前一样,在git崩溃之前)。在Cygwin中,我只有path中的一些*.bat启动程序和一些*.dll文件,但是我已经与ProcMon检查过,它没有接触到它们,即使我将它们从路径中删除,我仍然会遇到相同的崩溃。
发布于 2012-07-12 08:41:10
在另一个Windows和OS重新启动之后,问题消失了。
似乎其中的一个更新引入了一个bug,这个错误在另一个中修复了。也可能是“月相”虫。
我想我们永远不会知道..。
发布于 2014-04-07 10:45:55
这对我有用。
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
发布于 2013-05-20 17:13:59
我也遇到过这个问题
我已经用
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也可能发生错误,这同样取决于其他应用程序正在运行的是什么。
https://stackoverflow.com/questions/11419700
复制相似问题