Git GUI每次打开存储库时都会崩溃

时间:2012-07-10 18:36:21

标签: git dll msysgit

几天前,每次我在存储库中启动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,它没有触及它们,即使我从路径中删除它我仍然得到 同样的崩溃。

7 个答案:

答案 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命令就可以正常工作。