从几天前开始,每次我在存储库中启动 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 更新可能触发了这个——这也可以解释为什么另一台机器没有受到影响——自上次 Win 更新以来已经有 2-3 个月了。
有什么想法可以阐明这一点吗? (因为我只能在一台机器上看到它,所以在我知道这不是我/其他应用程序的错之前,我不想将它提交给官方跟踪器......)
在第一次评论后更新:
-
If you remove or rename the hook script, does it work?
很有趣,但是钩子(Hook)脚本实际上根本不存在(没有钩子(Hook)脚本是 present——.git\hooks 中只有 *.sample 文件)。甚至在其他地方都没有(git 程序 目录等)
-
Trace it so you know what commands it ran - from git-bash run
git gui --trace
遗憾的是,这不会向 shell 输出任何内容。行为相同。
-
Maybe get gdb in there.
我试过了,但是 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)
但我几乎可以肯定我做错了,所以非常欢迎提出建议:)
-
Make sure you don't have cygwin installed or at least that it is not present in your PATH at all
我确实安装了 cygwin(在 git 崩溃之前,我一直都是这样)。仅来自 Cygwin 我 在路径中有一些 *.bat 启动器和一些 *.dll 文件,但我已经检查过 ProcMon 它不会触及它们,即使我将它们从路径中移除,我仍然会得到 同样的崩溃。
最佳答案
这对我有用。
http://www.trinitycore.org/f/topic/5194-msysgit-couldnt-reserve-space-for-cygwins-heap/
Solution:
Change the base address of the msysgit.dll
c:\msysgit\bin>rebase.exe -b 0x50000000 msys-1.0.dll
关于每次打开存储库时,Git GUI 都会崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11419700/