从前几天开始,每次我在存储库中启动 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 更新可能触发了这个 - 这也可以解释为什么另一台机器不会受到影响 - 自上次 Win 更新以来已经 2-3 个月了。
任何想法如何阐明这一点?(因为我只能在单机上看到它,所以在我知道这不是我/其他应用程序的错之前,我不想将它提交给官方跟踪器......)
第一次评论后更新:
如果您删除或重命名挂钩脚本,它是否有效?
很有趣,但钩子脚本实际上根本不存在(没有钩子脚本存在——.git\hooks 中只有 *.sample 文件)。甚至在其他地方也没有(git 程序目录等)
跟踪它,这样你就知道它运行了哪些命令——来自 git-bash run
git gui --trace
可悲的是,这不会向外壳输出任何内容。行为是一样的。
也许在那里得到gdb。
我试过了,但 gdb 没有输出任何有用的东西。但是,我对 GDB 没有任何经验,我可能做错了。我得到了一个MinGW 的 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 确认它没有触及它们,即使我将它们从路径中删除,我仍然会遇到同样的崩溃。