2012-07-10 31 views
15

由于前几天,我每次在资源库中启动Git的图形用户界面,它会显示这个可怕的错误消息,并退出我点击确定后:的Git GUI崩溃每次打开仓库时

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个月。

任何想法如何阐明这一点? (我只能看到它单独的机器上,我不喜欢它提交给官方的跟踪器之前,我知道这是不是我的/其他应用程序的故障......)


更新第一批意见后:

  • 如果您删除或重命名的钩子脚本,它的工作原理?

    够搞怪,但钩子脚本实际上根本不存在的所有(无钩脚本 礼物 - 只有*。样品文件git的\挂钩)。甚至没有在其他地方(GIT程序 目录等)

  • 跟踪,所以你知道它跑什么命令 - 从混帐bash的运行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的安装或至少它不存在于你的 PATH所有

    我有cygwin的安装(因为我一直有,以前的git爆发)。从Cygwin我只有 路径中有一些* .bat发射器和一些* .dll文件,但我已与 检查ProcMon,它不会触及它们,即使我将它们从路径中删除,我仍然得到 同样的崩溃。

+1

如果您删除或重命名钩子脚本的人,它的工作原理? '.git/hooks/prepare-commit-msg' – fork0 2012-07-10 18:41:07

+2

跟踪它,让你知道它运行的命令 - 从git-bash运行'git gui --trace'。当它运行prepare-commit-hook时,它会发出它运行的命令,你可以查看该命令以获得进一步的调试信息。也许会在那里得到gdb。它抱怨cygwin的堆是可疑的。确保你没有安装cygwin,或者至少它没有安装在你的PATH中。 cygwin和msys不会混用。 – patthoyts 2012-07-10 21:37:04

+0

@patthoyts,fork0感谢指针,更新了Q并附有回复 – 2012-07-11 09:41:50

回答

3

在Windows更新和操作系统重新启动后,问题消失。

它似乎是一个更新引入了一个在另一个修复的错误。或者它可能是一个“月相”错误。

我想我们永远也不会知道......

2

我是一个Win64的机器上安装1.8.0后,得到同样的问题。我通过删除1.8.0和安装1.7.11

+0

不幸的是,OP没有指定版本,所以我们无法将他的报告与您的案例进行比较。 – 2013-06-20 11:10:34

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二进制文件中的一项功能引起的。

如果发生这种情况,您可以用附件zipfile中的文件替换文件 \ msys \ bin \ msys-1.0.dll 。 msys-1.0.zip

请注意,这并不解决问题,而是它移动DLL基地址。 不幸的是,这个替换DLL也可能会出现错误,这取决于其他应用程序的运行情况。


+1

工作就像一个魅力! – sepehr 2013-08-29 02:26:59

+1

它工作!谢啦! – 2013-09-06 07:44:34

+0

也许是实际问题的一个线索,关闭并重新启用cli使这个问题对我而言消失。它只发生在长时间正确工作之后。就我而言,我有两个遥控器,提供不同数量的提交。如果它再次发生,将会替换该dll。谢谢 – isimmons 2013-12-31 19:56:05

3

我也遇到过这种情况,这是因为MacType干扰了bash.exe和msys1.0.dll。 (MacType是一种用于Windows的字体平滑程序,它尝试模拟OS-X样式字体栅格化。)仅在我需要的程序上启用MacType,而不是在试图加载bash.exe的Console2窗口中修复问题。

也许这将帮助别人修复错误。

1

只需在您的C:\驱动器上搜索所有msys-1.0.dll,然后使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 

通过使Git的路径C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\来先在我%PATH%,该错误信息消失了!

无需重新启动或甚至更改DOS会话。
在该DOS会话中更新%PATH%后,git命令正常工作。

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

+0

适合我,Windows 7 64bit,git 1.9.4 – jasonslyvia 2014-08-24 14:02:01

+0

我不知道底座是什么与dll(感觉像DLL本身是在源代码控制下,如果需要rebasing)但我不在乎。它的工作原理:) – 2015-07-29 20:55:13

+0

适用于Windows 10破损的GitHub桌面客户端 – 2015-11-03 17:22:10

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 

希望它可以帮助谁试图谷歌这个问题

+0

这个解决方案最适合我,因为它直接指向Git GUI应用程序 – JPeroutek 2016-05-31 12:00:26

+0

虽然第一次尝试失败,但它工作正常: 'ReBaseImage(msys-1.0.dll)失败,最后一个错误= 2' 重新运行它从一个命令提示符作为管理员做的伎俩。 – df778899 2016-06-11 16:17:58