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

Ответы

Ответ 1

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

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

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

Ответ 3

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

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

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, опять же в зависимости от того, какие другие приложения работают.


Ответ 4

Я тоже столкнулся с этим, и это произошло потому, что MacType вмешивался в bash.exe и msys1.0.dll. (MacType - это программа сглаживания шрифтов для Windows, которая пытается подражать растеризации шрифтов OS-X). Включение режима MacType только в тех программах, в которых я нуждаюсь, а не в окне Console2, которое пыталось загрузить bash.exe, устранило проблему.

Возможно, это поможет кому-то еще исправить ошибку.

Ответ 5

У меня была та же проблема. Решение, которое работало для меня, было почти таким же, как и предложенное 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.

Ответ 6

Я получал эту же проблему после установки 1.8.0 на машине Win64. Я решил проблему, удалив 1.8.0 и установив 1.7.11

Ответ 7

Просто выполните поиск всех 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 работают.