Ответ 1
После перезапуска Windows Update и ОС проблема исчезла.
Кажется, что одно из обновлений ввело ошибку, которая была исправлена в другом. Или это могло быть ошибкой "фаза луны".
Я думаю, мы никогда не узнаем...
Начиная с нескольких дней назад, каждый раз, когда я запускаю графический интерфейс Git в репозитории, он отображает это сообщение об ошибке и завершает работу после того, как я нажму 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 heap, Win32 error 0
You must correct the above errors before committing.
Это происходит только с графическим интерфейсом Git и только в репозитории (старый или вновь созданный). Общие команды в Git Bash, включая фиксацию работы.
Не устанавливать и переустанавливать с новым пакетом (только незначительное изменение версии) не удалось устранить проблему. Это все еще происходит со старыми репозиториями, а также с недавно созданными.
На чистой машине эта проблема не воспроизводится, поэтому я предполагаю, что это что-то на моей коробке, но я не помню, чтобы что-то происходило смешно. Я действительно забыл выключить свою коробку после долгого времени, поэтому, возможно, некоторые из Windows Update могли вызвать это, что также объясняет, почему другая машина не страдает - это через 2-3 месяца с момента последнего обновления Windows.
Любые идеи, как пролить свет на это? (Поскольку я могу видеть это только на одной машине, я не хочу отправлять ее официальному трекеру, прежде чем я узнаю, что это не ошибка моего/другого приложения...)
Обновить после первых комментариев:
Если вы удалите или переименуете hook script, это сработает?
Забавно, но крючок script на самом деле вообще не существует (нет скриптов hook present - есть только файлы *.sample в .git\hooks). Даже в другом месте (git программа dir и т.д.)
Отследите его, чтобы вы знали, какие команды он запускал - от 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, что он их не трогает, и даже если я удалю их с пути, который я все еще получаю тот же крах.
После перезапуска Windows Update и ОС проблема исчезла.
Кажется, что одно из обновлений ввело ошибку, которая была исправлена в другом. Или это могло быть ошибкой "фаза луны".
Я думаю, мы никогда не узнаем...
Это сработало для меня.
http://www.trinitycore.org/f/topic/5194-msysgit-couldnt-reserve-space-for-cygwins-heap/
Решение:
Измените базовый адрес файла msysgit.dll
c:\msysgit\bin>rebase.exe -b 0x50000000 msys-1.0.dll
У меня была и эта проблема.
Я решил это с помощью
http://support.code-red-tech.com/CodeRedWiki/VirtualAllocPointerNull
По-видимому, это вызвано некоторой особенностью, и замена dll исправляет ее для большинства людей
если сайт опущен -
Виртуальный указатель Alloc равен null
Очень редко работающий make может привести к ошибке, подобной этой:
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x71110000, RegionSize 0x350000, State 0x10000
\msys\bin\make.exe: *** Couldn't reserve space for cygwin heap, Win32 error 0
Это проблема, которая затрагивает крошечное меньшинство клиентов и зависит от того, какие другие приложения они работают одновременно.
Это вызвано функцией в двоичных файлах MSYS, которые мы используем для обеспечения среды сборки для продукта.
Если это произойдет, вы можете заменить файл \ MSYS\Bin\MSYS-1.0.dll с файлом в прикрепленном zipfile. msys-1.0.zip
Обратите внимание, что это не устраняет проблему, а скорее перемещает базовый адрес DLL. К сожалению, возможно, эта ошибка может возникнуть и с этой заменой DLL, опять же в зависимости от того, какие другие приложения работают.
Я тоже столкнулся с этим, и это произошло потому, что MacType вмешивался в bash.exe и msys1.0.dll. (MacType - это программа сглаживания шрифтов для Windows, которая пытается подражать растеризации шрифтов OS-X). Включение режима MacType только в тех программах, в которых я нуждаюсь, а не в окне Console2, которое пыталось загрузить bash.exe, устранило проблему.
Возможно, это поможет кому-то еще исправить ошибку.
У меня была та же проблема. Решение, которое работало для меня, было почти таким же, как и предложенное XandrGuard
c:\msysgit\bin>rebase.exe -b 0x50000000 msys-1.0.dll
Решение объясняется здесь http://jakob.engbloms.se/archives/1403
Для меня решение было несколько иным. Это было
C:\Program Files (x86)\Git\bin>rebase.exe -b 0x50000000 msys-1.0.dll
Надеюсь, что это поможет людям, которые пытаются решить проблему Google.
Я получал эту же проблему после установки 1.8.0 на машине Win64. Я решил проблему, удалив 1.8.0 и установив 1.7.11
Просто выполните поиск всех msys-1.0.dll
на вашем диске C:\
и сделайте первый, который используется Git первым.
В моем случае я просто изменил порядок:
C:\prgs\Gow\Gow-0.7.0\bin\msys-1.0.dll
C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\msys-1.0.dll
Сделав путь Git path C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\
первым в моем %PATH%
, сообщение об ошибке исчезло!
Не нужно перезагружаться или даже менять сеанс DOS.
После обновления %PATH%
в этом сеансе DOS команды Git работают.