原文链接 : http://blog.csdn.net/li2008kui/article/details/50173115 侵删
1. 问题描述
今天使用Git时,发现git Bash闪退,而使用Git GUI时提示以下错误:
0 [main] us 0init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68570000, RegionSize 0x1B0000, State 0x10000
C:\Program Files(x86)\Git\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error0
由于崩溃已经修复,无法重现错误信息,故网上找一张类似图片,错误信息类似下图所示:
2. 问题原因
网上查了一下,问题的原因是msys-1.0.dll起始地址冲突。
3. 思路分析
使用rebase进行dll基地址重定位。
在ReBase.exe哪里?
a.在以下位置找一下:
C:\Program Files (x86)\MicrosoftSDKs\Windows\v7.1A\Bin
C:\Program Files (x86)\MicrosoftSDKs\Windows\v7.1A\Bin\x64
b.根据您的操作系统类型选择使用。如果没有找到,到网上下载。
4. 解决办法
1. 打开命令提示符
在“开始”——“程序”——“附件”里选择命令提示符,也可使用快捷键“Win + R”打开运行,输入cmd进行打开。
2. 输入以下命令:
rebase -b 0x68570000 C:\Program Files(x86)\Git\bin\msys-1.0.dll
如果提示:'rebase' 不是内部或外部命令,也不是可运行的程序或批处理文件。
说明系统没有找到ReBase.exe文件,请先添加环境变量。具体请看步骤3:
3. 添加环境变量
在“我的电脑”、“计算机”或“此电脑”上右击,选择“属性(R)”——“高级系统设置”——“高级”选项卡——“环境变量(N)...”,在用户变量或系统变量里双击“PATH”变量,将“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\x64;”添加到变量值中,然后一路确定即可。
4. 重新打开命令提示符。
这里需要重新打开集命令提示符,不然环境变量配置在当前命令提示符窗口中不会生效。
5. 执行第2步的操作
rebase -b 0x68570000 C:\Program Files(x86)\Git\bin\msys-1.0.dll
您可能会看到如下失败信息:
REBASE: *** RelocateImage failed(program). Image may be corrupted
REBASE: *** RelocateImage failed(files). Image may be corrupted
REBASE: *** RelocateImage failed(msys-1.0.dll). Image may be corrupted
REBASE: Total Size of mapping0x0000000000000000
REBASE: Range 0x0000000068570000-0x0000000068570000
不要着急,只是说“可能被损坏”而已。
6. 重启您的电脑
重启之后Git Bash和GitGUI都可以正常使用了。
如果还是有问题(当然我只是猜测),您可以换一个别的地址执行试一下。由于直接操作内存中的地址应该是比较危险的事情,所以尽量使用一个在“0x68570000”附近的地址,比如“0x69000000”。(对于直接操作内存地址会不会有别的问题,计算机操作系统方面的东西不是太懂,望各位指正)。