Ao usar o git no Windows 10 (1803), alguns comandos apresentam o seguinte erro:
git submodule add https://github.com/..../......git ......
3 [main] basename (13656) C:\.....\basename.exe: *** fatal error - cygheap base mismatch detected - 0x64313400/0x11E3400.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facility
and 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 have
installed the cygwin distribution. Rebooting is also suggested if you
are unable to find another cygwin DLL.
Como posso resolver esse problema?
Responder1
Existem vários motivos possíveis para esse erro.
Por exemplo, você poderia realmente ter uma versão conflitante da DLL.
No entanto, as versões recentes do Windows 10 possuem um conjunto de recursos de proteção adicionais integrados que originalmente faziam parte do Microsoft EMET.
Mais notavelmente, o ASLR (Randomização de layout de espaço de endereço) o recurso de segurança não é compatível com os executáveis do tipo UNIX incluídos na instalação do Git para Windows.
Para corrigir esse problema, abra as configurações do Exploit Protection, mude para a guia Configurações do programa e adicione os nomes dos executáveis listados nos erros (você pode ter vários).
No exemplo dado, você pode inserir apenas basename.exe
ou o caminho completo se for um pouco mais paranóico.
Para cada executável, desative a proteção ASLR.
Para referência adicional, consulte o seguinte problema do GitHub:
Responder2
Depois de habilitar o ALSR obrigatório por padrão no Windows 10.
Preciso desabilitar ForceRelocateImages para todos os executáveis git-bash. Para fazer isso, crie um pequeno script do PowerShell ou digite direto no PowerShell o código abaixo. Você precisa executar o PowerShell como administrador.
Get-Item -Path "C:\Program Files\Git\usr\bin\*.exe" | %{ Set-ProcessMitigation -Name $_.Name -Disable ForceRelocateImages }
Get-Item -Path "C:\Program Files\Git\bin\*.exe" | %{ Set-ProcessMitigation -Name $_.Name -Disable ForceRelocateImages }
Get-Item -Path "C:\Program Files\Git\*.exe" | %{ Set-ProcessMitigation -Name $_.Name -Disable ForceRelocateImages }
Depois disso, o git-bash funciona bem.
Responder3
Para mim, a solução foi remover um arquivo msys-2.0.dll
. A mensagem de erro sobre "cygwin" está incorreta.
Se você tiver vários msys-2.0.dll
arquivos na caixa, isso poderá causar problemas. Remova todos eles, exceto aquele que fica próximo aos seus comandos git (c:\program files\git....)
Ou se você precisar de várias versões, altere o PATH para que, quando estiver usando o comando git, a versão da dll MSYS64 não seja encontrada.
Responder4
Renomear
msys
dll pode ajudar:https://stackoverflow.com/a/74463416/2377343Você pode tentar desativar o ASLR:https://stackoverflow.com/a/76296598/2377343