Eu tenho um .sh
script que clico duas vezes para executá-lo pelo git para Windows.
Agora eu preciso (imagemagick) convert
do cygwin (que eu instalei) e estou chamando-o com seu caminho absoluto - /c/cygwin64/bin/convert.exe
- mas eu recebo:
erro fatal - incompatibilidade de base do cygheap detectada. Esse problema provavelmente ocorre devido ao uso de versões incompatíveis da DLL do cygwin.
Encerrar a convert
chamada real em uma chamada cygwin bash, ou mesmo em uma cmd.exe
chamada, não ajuda. Isso é um pouco estranho, porque às vezes uso executáveis do cygwin diretamente em .cmd
scripts, e isso sempre funcionou.
O que eu posso fazer? Uma solução que mantenha meu programa limitado a um arquivo seria a preferida.
(Eu sei que provavelmente poderia instalar o imagemagick nativo do Windows. Mas, no dia seguinte, preciso de outra ferramenta cygwin em um git-for-Win-Shellscript. Além disso, eu gostaria de entender o que está acontecendo aqui. Provavelmente tornarei o git for Windows obsoleto no meu local de trabalho , se possível)
Respostas:
erro fatal - incompatibilidade de base do cygheap detectada.
Este erro é causado porque o caminho do Git for Windows é incompatível com o Cywin.
Ambos usam
/bin
e,/usr/bin
porém, são mapeados para diretórios diferentes (porque usam tabelas de montagem diferentes).O Cywin espera encontrar a dll em
/usr/bin/cygwin1.dll
(e não é encontrada no Git for Windows)Quando você executa explicitamente qualquer comando Cygwin em um
bash
shell do Git for Windows , o Cygwin não consegue encontrar sua DLL e gera a mensagem de erro acima.Observe abaixo que o mapeamento de montagem para
/
é diferente.Git para Windows:
Cygwin:
Não há solução, a não ser não misturar e combinar utilitários derivados do cygwin. Escolha um e fique com ele.
fonte
Eu tinha o mesmo problema no Windows 10. Eu queria saber como é possível ter várias versões do CygWin, enquanto não consigo encontrar nem mesmo um cygwin.dll. GitExtensions-> Stash e Git Bash foram travados com diferentes mensagens de erro. A solução está aqui: Vá para Windows Defender -> Controle de aplicativo e navegador -> Explorar proteção. E desligue três opções com o ASLR. Você precisa reiniciar o sistema posteriormente, mas isso realmente ajuda!
fonte