Wie kann ich den Fehler „Schwerwiegender Fehler – Cygheap-Basiskonflikt erkannt“ beheben, wenn ich Git unter Windows 10 verwende?

Wie kann ich den Fehler „Schwerwiegender Fehler – Cygheap-Basiskonflikt erkannt“ beheben, wenn ich Git unter Windows 10 verwende?

Bei der Verwendung von Git unter Windows 10 (1803) geben einige Befehle den folgenden Fehler aus:

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.

Wie kann ich dieses Problem lösen?

Antwort1

Für diesen Fehler gibt es mehrere mögliche Gründe.

Beispielsweise könnte es tatsächlich vorkommen, dass die DLL-Version kollidiert.

Neuere Versionen von Windows 10 verfügen jedoch über eine Reihe zusätzlicher integrierter Schutzfunktionen, die ursprünglich Teil von Microsoft EMET waren.

Besonders hervorzuheben ist die ASLR (Randomisierung des Adressraum-Layouts) ist nicht mit den UNIX-ähnlichen ausführbaren Dateien kompatibel, die in der Git-Installation für Windows enthalten sind.

Um dieses Problem zu beheben, öffnen Sie die Exploit-Schutz-Einstellungen, wechseln Sie zur Registerkarte „Programmeinstellungen“ und fügen Sie die in den Fehlern aufgeführten ausführbaren Namen hinzu (es können ziemlich viele sein).

Im angegebenen Beispiel können Sie nur den Pfad eingeben basename.exeoder, wenn Sie etwas paranoider sind, den vollständigen Pfad.

Deaktivieren Sie für jede ausführbare Datei den ASLR-Schutz.

Weitere Informationen finden Sie im folgenden GitHub-Problem:

https://github.com/desktop/desktop/issues/3096

Antwort2

Nachdem obligatorisches ALSR unter Windows 10 standardmäßig aktiviert wurde.

Ich muss ForceRelocateImages für alle Git-Bash-Programme deaktivieren. Erstellen Sie dazu ein kleines PowerShell-Skript oder geben Sie den folgenden Code direkt in PowerShell ein. Sie müssen PowerShell als Administrator ausführen.

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 }

Danach funktioniert Git-Bash einwandfrei.

Antwort3

Für mich bestand die Lösung darin, ein inkompatibles zu entfernen msys-2.0.dll. Die Fehlermeldung zu „cygwin“ ist falsch.

Wenn Sie mehrere msys-2.0.dllDateien auf der Box haben, kann dies zu Problemen führen. Entfernen Sie sie alle außer der Datei, die sich neben Ihren Git-Befehlen selbst befindet (c:\Programme\git...).

Oder wenn Sie mehrere Versionen benötigen, ändern Sie den PATH, sodass beim Verwenden des Git-Befehls die MSYS64-DLL-Version nicht gefunden wird.

Antwort4

  1. Das Umbenennen msysder DLL könnte helfen:https://stackoverflow.com/a/74463416/2377343

  2. Sie können versuchen, ASLR zu deaktivieren:https://stackoverflow.com/a/76296598/2377343

verwandte Informationen