Git Сбой GUI при каждом открытии репозитория

Начиная с нескольких дней назад, каждый раз, когда я запускаю графический интерфейс 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 <code>git gui --trace</code>

    К сожалению, это ничего не выводит на оболочку. Поведение одинаково.

  • Может быть, получите 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, что он их не трогает, и даже если я удалю их с пути, который я все еще получаю тот же крах.

7 ответов

После перезапуска Windows Update и ОС проблема исчезла.

Кажется, что одно из обновлений ввело ошибку, которая была исправлена ​​в другом. Или это могло быть ошибкой "фаза луны".

Я думаю, мы никогда не узнаем...


Это сработало для меня.

<a href="http://www.trinitycore.org/f/topic/5194-msysgit-couldnt-reserve-space-for-cygwins-heap/" rel="nofollow noreferrer" target="_blank">http://www.trinitycore.org/f/topic/5194-msysgit-couldnt-reserve-space-for-cygwins-heap/</a>

Решение:

Измените базовый адрес файла msysgit.dll

<code>c:\msysgit\bin>rebase.exe -b 0x50000000 msys-1.0.dll</code>


У меня была и эта проблема.

Я решил это с помощью

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 работают.

licensed under cc by-sa 3.0 with attribution.