关于出现VirtualAlloc pointer is null导致git崩溃的解决办法

时间:2024-04-09 17:42:50

原文链接 :  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

由于崩溃已经修复,无法重现错误信息,故网上找一张类似图片,错误信息类似下图所示:

关于出现VirtualAlloc pointer is null导致git崩溃的解决办法

 

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”。(对于直接操作内存地址会不会有别的问题,计算机操作系统方面的东西不是太懂,望各位指正)。
1