Cygwin / Git error Обнаружено несоответствие базы Cygheap - PullRequest
48 голосов
/ 13 ноября 2011

Я установил два сервера Windows с последними версиями cygwin и git и пытаюсь клонировать репозиторий git с S1 на S2.Я могу успешно выполнить ssh из S2 в S1, используя ключи RSA, но когда я делаю это: git clone "ssh: // root @ S1 / path / to / my / repo", он возвращает этот вывод:

    Cloning into /cygdrive/c/program files/apache software foundation/apache2.2/htdocs/myfolder...
    2 [main] git 2004 C:/cygwin/lib/git-core/git.exe *** fatal error - cygheap base mismatch detected - 0x61242860/0x6123790.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search fro cygwin1.dll using the WIndows Start->Find/Search facility and delete all bu the most recent version.  The most recent version *should* reside in x:\cygwin\bin, where 'x' is the drive on which you have installed the cygwin distrubtion. Rebooting is also suggested if you are unable to find another cygwin DLL.  

--5 more errors like that one --

remote: Counting objects: 3275, done.
remote: Compressing oobjects: 100% (3106/3106), done.
fatal: write error: Broken pipe

Итак, я следовал этим инструкциям, но не повезло.Есть предложения?

Ответы [ 12 ]

49 голосов
/ 16 февраля 2016

У меня была такая же проблема.

Я просто перезагрузил мой компьютер, и он снова заработал.

Это не помогает найти причину проблемы, но по крайней мереты можешь продолжать работать.

24 голосов
/ 28 января 2016

РЕДАКТИРОВАТЬ: я нашел решение.

TL; DR: Перейдите в папку GitHub AppData и удалите папку PortableGit ,и перезапустите GitHub

  1. Закрыть GitHub
  2. Перейдите в папку GDHub AppData: C:\Users\[username]\AppData\Local\GitHub
  3. Удалите папку, которая начинается с PortableGit и заканчивается случайным образомстрока букв и цифр
  4. Перезагрузите GitHub.Это повторно извлечет dll, и проблема должна быть исправлена!

(Оригинальный «ответ») Я перепробовал кучу вещей, и я понятия не имею, что на самом деле работало вконец.Я перезапустил GitHub, перезапустил мой компьютер, удалил и переустановил GitHub, удалил несколько других программ, которые я недавно установил, но в итоге они мне не нужны, удалил папку GitHub в каталоге AppData \ Local, скачал и установил cygwin, и, возможно, некоторые другие вещи, которые язабыл.

Последняя попытка была найти все файлы cygwin1.dll в проводнике и переименовать их в cygwin1x.dll, а затем перезагрузить компьютер.После того, как я это сделал, он снова заработал.

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

21 голосов
/ 25 января 2018

Нет Cygwin, нет GitHub

Я только начал испытывать это в последнее время, и ни один из приведенных выше ответов не применим к моему случаю - У меня не было установлено Cygwin или GitHub. Вместо этого, в моем случае, функция безопасности Windows, Рандомизация размещения адресного пространства или ASLR создала эту проблему . Это отключено по умолчанию для программ, которые не помечают себя как совместимые.
Тем не менее, я включил ASLR для всех программ для дополнительной безопасности. Недостатком является то, что команды git теперь не работают.

Решение

Решением было исключить ASLR для исполняемых файлов git. Поскольку их довольно много, мне пришлось использовать PowerShell в качестве администратора :

Get-Item -Path "C:\Program Files\Git\usr\bin\*.exe" | %{ Set-ProcessMitigation -Name $_.Name -Disable ForceRelocateImages }
10 голосов
/ 14 марта 2012

Вы не упоминаете об этом в своем заявлении о проблеме, но я предполагаю, что вы работаете в 64-битной версии Windows.У Cygwin есть проблемы с запуском 64-битной Windows, особенно с большими программами.Я полагаю, что это связано с проблемами управления памятью в библиотеке поддержки cygwin1.dll.Похоже, что он делает неподдерживаемое предположение, что он будет всегда и всегда будет отображаться на один и тот же адрес в каждом процессе, поэтому вполне допустимо хранить специфичные для процесса вещи (например, адреса кучи) в глобальных системных переменных.1002 * В свободное время я пытался отследить проблемные моменты.В то же время, вы можете попробовать перебазировать cygwin1.dll сам.Имейте в виду, это намного сложнее, чем нужно - даже сложнее, чем опровергать все остальное.

9 голосов
/ 17 августа 2016

Для меня причина была в том, что git не устанавливался через cygwin, хотя при обычной загрузке с git-scm.Как только я запустил установку cygwin, добавил git, все заработало отлично.

5 голосов
/ 13 ноября 2011

Вы получаете эту ошибку с другими командами?С git --version?

Попробуйте перезапустить Cygwin setup.exe и переустановить cygwin1.dll (пакет «cygwin» в разделе «Base») и ваш пакет git (пакет «git» в разделе «Devel»).) и перезагрузка.

1 голос
/ 20 декабря 2017

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

Сначала запустите cygcheck PROGRAMM,в моем случае у меня была проблема с tar.exe, поэтому я запустил: cygcheck tar команда cygcheck показывает, какие библиотеки DLL используются.

В cygcheck все выглядело правильно, поэтому я решил, основываясь накомментарии Джима Шнайдера о переходе с 64-битной версии Cygwin на 32-битную версию, которые в конечном итоге решили мою проблему.

0 голосов
/ 11 сентября 2018

У меня была такая же ошибка при попытке перейти на git-репо из Visual Studio 2017 с использованием скрипта, начинающегося с #! / Bin / sh с

[repo folder]\.git\hooks\commit-msg

Сообщение об ошибке:

1 [main] sh (11460) c:\program files (x86)\microsoft visual studio\2017\enterprise\common7\ide\commonextensions\microsoft\teamfoundation\team explorer\Git\usr\bin\sh.exe:
 *** fatal error - cygheap base mismatch detected - 0x14DD408/0x12AD408.This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facilityand delete all but the most recent version.
The most recent version *should*reside in x:\cygwin\bin, where 'x' is the drive on which you haveinstalled the cygwin distribution.
Rebooting is also suggested if youare unable to find another cygwin DLL.      

Я пробовал разные решения выше без успеха

Для решения этой проблемы я скопировал содержимое с:

C:\Program Files\Git\usr\bin

до

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\usr\bin

Проблема на моем компьютере произошла из-за несовпадения версий на sh.exe, и копирование этих файлов решило проблему

0 голосов
/ 23 мая 2018

В моем случае PATH в Переменные среды был неверным.Я переместил cygwin немного раньше в пути (убедившись, что он установлен перед git path).Таким образом, cygwin dll был за git dll.

Например;Путь C:\Program Files\Git\usr\bin;C:\cygwin\bin;... был изменен на C:\cygwin\bin;C:\Program Filenter code herees\Git\usr\bin;...

Среда была Win7x86, и для использования этого обновленного пути требовалась перезагрузка.

0 голосов
/ 10 января 2018

В моем случае перезагрузка компьютера не работала.

Я наконец-то обнаружил, что это произошло из-за конфликта между установкой Msys (устанавливается, когда я устанавливал утилиты git из командной строки).Если ваш системный путь содержит какие-либо каталоги с версией Msys, удалите такие записи пути и повторите попытку.Похоже, Cygwin пытается выполнить исполняемые файлы из установки Msys, а DLL обнаруживает несоответствие.

...