由于前几天,我每次在资源库中启动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,它不会触及它们,即使我将它们从路径中删除,我仍然得到 同样的崩溃。
如果您删除或重命名钩子脚本的人,它的工作原理? '.git/hooks/prepare-commit-msg' – fork0 2012-07-10 18:41:07
跟踪它,让你知道它运行的命令 - 从git-bash运行'git gui --trace'。当它运行prepare-commit-hook时,它会发出它运行的命令,你可以查看该命令以获得进一步的调试信息。也许会在那里得到gdb。它抱怨cygwin的堆是可疑的。确保你没有安装cygwin,或者至少它没有安装在你的PATH中。 cygwin和msys不会混用。 – patthoyts 2012-07-10 21:37:04
@patthoyts,fork0感谢指针,更新了Q并附有回复 – 2012-07-11 09:41:50