Git GUI вылетает каждый раз, когда открывает репозиторий

Так как несколько дней назад каждый раз, когда я запускаю Git GUI в репозитории, он отображает это ужасающее сообщение об ошибке и завершает работу после нажатия кнопки ОК:

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's heap, Win32 error 0

You must correct the above errors before committing.

Это происходит только с Git GUI и только в репозитории (старом или только что созданном). Обычные команды в Git Bash, включая commit, работают нормально.

Удаление и повторная установка с более новым пакетом (только незначительное изменение версии) не устранили проблему. Это по-прежнему происходит со старыми репозиториями, а также со вновь созданными.

На чистой машине эта проблема не воспроизводится, поэтому я предполагаю, что это что-то есть на моей коробке, но я не помню, чтобы что-нибудь смешное устанавливалось. Я помню, что выключил свою коробку через долгое время, так что, возможно, некоторые обновления Windows могли бы вызвать это - это также объясняет, почему другая машина не страдает - это 2-3 месяца с момента последнего обновления Win.

Есть идеи как пролить свет на это? (Так как я вижу его только на одной машине, я не чувствую необходимости отправлять его на официальный трекер, пока не узнаю, что это не ошибка моего / другого приложения ...)

Update после первых комментариев:

If you remove or rename the hook script, does it work?

Funny enough, but the hook script actually does not exist at all (no hook scripts are present--there are only *.sample files in .git\hooks). Not even elsewhere (git program dir, etc.)

Trace it so you know what commands it ran - from git-bash run git gui --trace

Sadly this does not output anything to the shell. Behaviour is the same.

Maybe get gdb in there.

I tried but gdb did not output anything useful. However, I don't have any experience with GDB, I'm probably doing it wrong. I got a MinGW's gdb, ran it from command prompt with git.exe as argument and then ran run gui. gdb did not output anything interesting:

(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)  

But I'm almost sure I'm Doing It Wrong, so advice is more than welcome :)

Make sure you don't have cygwin installed or at least that it is not present in your PATH at all

I do have cygwin installed (as I always had, before git broke). From Cygwin I only have in path some *.bat launchers and some *.dll files, but I have checked with ProcMon that it does not touch them and even if I remove them from the path I still get the same crash.

 fork010 июл. 2012 г., 20:41
Если вы удалите или переименуете скрипт подключения, он будет работать?.git/hooks/prepare-commit-msg
 Alois Mahdal11 июл. 2012 г., 11:41
@patthoyts, fork0 Спасибо за указатели, обновил Q с ответами
 patthoyts10 июл. 2012 г., 23:37
Проследите, чтобы вы знали, какие команды он выполнял - из git-bash rungit gui --trace, Когда он запускает prepare-commit-hook, он запускает команду, которую он запускает, и вы можете просмотреть эту команду для получения дополнительной информации об отладке. Может быть, получить GDB там. Тот факт, что он жалуется на кучу cygwin, является подозрительным. Убедитесь, что у вас не установлен Cygwin или, по крайней мере, он вообще отсутствует в вашей переменной PATH. cygwin и msys не смешиваются.
 imz -- Ivan Zakharyaschev20 июн. 2013 г., 13:04
Я вижу похожую проблему сmsysgit.googlecode.com/files/Git-1.8.3-preview20130601.exe сейчас --github.com/msysgit/msysgit/issues/123 , Но у меня больше нет полезной информации об этом.
 Alois Mahdal20 июн. 2013 г., 13:24
@ imz - IvanZakharyaschev Я не могу поверить, что забыл добавить версию в Q и сошел с рук. ;) К сожалению, я не могу проверить, я уже работаю в другой компании. Я дико догадываюсь, что это было что-то стабильное на тот момент на странице googlecode (не уверен, если 1.8 *)

Ответы на вопрос(7)

http://www.trinitycore.org/f/topic/5194-msysgit-couldnt-reserve-space-for-cygwins-heap/

Solution:

Change the base address of the msysgit.dll

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

 29 февр. 2016 г., 00:16
@PawelCioch - это другой тип перебазирования, не связанный с git, который изменяет базовый адрес в памяти, в которую загружается DLL.
 24 авг. 2014 г., 16:02
у меня работает, Windows 7 64bit, git 1.9.4
 03 нояб. 2015 г., 18:22
Работает на сломанном клиенте GitHub Desktop на Windows 10
 29 июл. 2015 г., 22:55
Я понятия не имею, что rebase имеет отношение к 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

 31 мая 2016 г., 14:00
Это решение работало лучше всего для меня, так как оно напрямую указывает на приложение Git GUI
 11 июн. 2016 г., 18:17
Это сработало, хотя первая попытка не удалась:ReBaseImage (msys-1.0.dll) failed with last error = 2  Повторно запустив его из командной строки, администратор сделал свое дело.
Решение Вопроса

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

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

Я решил это с

http://support.code-red-tech.com/CodeRedWiki/VirtualAllocPointerNull

Видимо это вызвано какой-то функцией, и замена DLL исправляет это для большинства людей

в случае, если сайт не работает -

Virtual Alloc pointer is 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's heap, Win32 error 0

Это проблема, которая затрагивает крошечное меньшинство клиентов и зависит от того, какие другие приложения работают одновременно.

Это вызвано функцией в двоичных файлах MSYS, которую мы используем для предоставления среды сборки для продукта.

Если это произойдет, вы можете заменить файл \ MSYS \ Bin \ MSYS-1.0.dll с файлом в прикрепленном zipfile.msys-1.0.zip

Обратите внимание, что это не решает проблему, а перемещает базовый адрес DLL. К сожалению, возможно, что ошибка может возникнуть и с этой заменяющей DLL, опять же, в зависимости от того, какие другие приложения работают.

 31 дек. 2013 г., 20:56
может быть, ключ к реальной проблеме, закрытие и повторное открытие клики заставили эту проблему уйти ко мне. Это произошло только после правильной работы в течение длительного времени. В моем случае у меня было два пульта с разным количеством коммитов. Заменит dll, если это произойдет снова. Спасибо
 29 авг. 2013 г., 04:26
Работал как шарм!
 06 сент. 2013 г., 09:44
Это сработало! Спасибо чувак!
 03 нояб. 2015 г., 18:17
Не работает для сломанного настольного клиента GitHub:gyazo.com/a402712617d4295f3385d5c083745a5e

ешил проблему, удалив 1.8.0 и установив 1.7.11

 20 июн. 2013 г., 13:10
К сожалению, OP не указал версию, поэтому мы не можем сравнить его сообщение с вашим делом.

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

Делая путь GitC:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\ прийти первым в моем%PATH%, сообщение об ошибке исчезло!

Не нужно перезагружать или даже менять сеанс DOS.
Однажды%PATH% обновляется в этом сеансе DOS, команды git просто работают.

Ваш ответ на вопрос