У меня есть .sh
скрипт, который я дважды щелкаю, чтобы он выполнялся git для Windows.
Теперь мне нужно (imagemagick) convert
от Cygwin (который я установил), и я называю его с абсолютным путем - /c/cygwin64/bin/convert.exe
- но я получаю:
фатальная ошибка - обнаружено несоответствие базы Cygheap. Эта проблема, вероятно, связана с использованием несовместимых версий библиотеки cygwin.
Перенос фактического convert
вызова в вызове cygwin bash или даже в cmd.exe
вызове не помогает. Это немного странно, потому что я иногда использую исполняемые файлы cygwin непосредственно в .cmd
скриптах, и это всегда работало.
Что я могу сделать? Решение, которое ограничивает мою программу одним файлом, было бы предпочтительным.
(Я знаю, что, возможно, я мог бы просто установить родной имидж-образ Windows. Но на следующий день мне нужен еще один инструмент cygwin в git-for-Win-Shellscript ... также, я бы хотел понять, что здесь происходит. И да, Возможно, я сделаю git для Windows устаревшим на своем рабочем месте , если это возможно)
Ответы:
фатальная ошибка - обнаружено несоответствие базы Cygheap.
Эта ошибка вызвана тем, что путь Git для Windows несовместим с Cywin.
Они оба используют
/bin
и/usr/bin
но эти карты в разные каталоги (потому что они используют различные таблицы монтирования).Cywin ожидает найти DLL в
/usr/bin/cygwin1.dll
(и не найден в Git для Windows)Когда вы явно запускаете любую команду Cygwin в
bash
оболочке Git for Windows, Cygwin не может найти свою dll и генерирует сообщение об ошибке выше.Обратите внимание, что отображение монтирования для
/
отличается.Git для Windows:
Cygwin:
Нет другого решения, кроме как не смешивать и сопоставлять утилиты, полученные из Cygwin. Выберите один и придерживайтесь его.
источник
У меня была та же проблема на Windows 10. Мне было интересно, как можно иметь много версий CygWin, в то время как я не могу найти даже один cygwin.dll. GitExtensions-> Stash и Git Bash были сбой с различными сообщениями об ошибках. Решение здесь: перейдите в Защитник Windows -> Управление приложениями и браузерами -> Защита от эксплойтов. И отключите три варианта с ASLR. Вы должны перезагрузить свою систему после этого, но это действительно помогает!
источник