web-dev-qa-db-fra.com

Erreur Cygwin/Git: incompatibilité de base cygheap détectée

J'ai installé deux serveurs Windows avec les dernières versions de cygwin et git, et j'essaye de cloner le référentiel git de S1 à S2. Je réussis à passer de S2 à S1 avec des clés RSA, mais lorsque je fais ceci:

    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

Alors j'ai suivi ces instructions, mais pas de chance. Aucune suggestion?

46
John Zumbrum

J'ai eu le même problème.

Je viens de redémarrer mon PC et cela a encore fonctionné.

Trouver la raison du problème n'aide pas, mais au moins, vous pouvez continuer à travailler.

46
Serdar Değirmenci

EDIT: J'ai trouvé la solution.

TL; DR: Allez dans le dossier GitHub AppData et supprimez le dossier PortableGit , puis redémarrez GitHub.

  1. Fermer GitHub
  2. Accédez au dossier GitHub AppData: C:\Users\[username]\AppData\Local\GitHub
  3. Supprimer le dossier qui commence par PortableGit et se termine par une chaîne aléatoire de lettres et de chiffres
  4. Redémarrez GitHub. Il va ré-extraire les dll et le problème devrait être résolu!

("Réponse" originale) J'ai essayé beaucoup de choses et je n'ai aucune idée de ce qui a fonctionné au final. J'ai redémarré GitHub, redémarré mon ordinateur, désinstallé et réinstallé GitHub, désinstallé plusieurs autres programmes que j'avais récemment installés mais dont je n'avais plus besoin, supprimé le dossier GitHub du répertoire AppData\Local, téléchargé et installé cygwin et éventuellement d'autres éléments. oublie.

La dernière tentative a été de trouver tous les fichiers cygwin1.dll dans l'explorateur de fichiers, de les renommer en cygwin1x.dll et de redémarrer mon ordinateur. Après que j'ai fait cela, cela a encore fonctionné.

Je vais tenter de le deviner, mais je vais dire que télécharger et installer cygwin puis redémarrer mon ordinateur a fait le bon choix. </ S>

24
shieldgenerator7

Pas de Cygwin, pas de GitHub

C’est seulement récemment que je commence à expérimenter cela, et aucune des réponses ci-dessus ne s’applique à mon cas - Cygwin et GitHub ne sont pas installés.

À la place, dans mon cas, une fonctionnalité de sécurité Windows, La randomisation du format d’espace d’adresse ou ASLR a créé ce problème . Ceci est désactivé par défaut pour les programmes qui ne se considèrent pas comme compatibles.
Cependant, j'ai activé ASLR pour tous les programmes pour plus de sécurité. L'inconvénient est que les commandes git ne fonctionnent pas maintenant.

Solution

La solution était d'exclure ASLR pour les exécutables git. Parce qu'ils sont assez nombreux, j'ai dû utiliser PowerShell en tant que administrator

Get-Item -Path "C:\Program Files\Git\usr\bin\*.exe" | %{ Set-ProcessMitigation -Name $_.Name -Disable ForceRelocateImages }
16
White hawk

Vous n'en parlez pas dans votre déclaration de problème, mais je suppose que vous utilisez une version 64 bits de Windows. Cygwin a des problèmes d’exécution sous Windows 64 bits, en particulier avec les gros programmes. Je pense que cela est dû à des problèmes de gestion de la mémoire au sein de la bibliothèque de support cygwin1.dll. Il semble y avoir une hypothèse insoutenable sur le fait qu'il sera toujours et toujours mappé à la même adresse dans chaque processus. Il peut donc conserver des éléments spécifiques au processus (tels que les adresses de tas) dans des variables globales du système.

Pendant mon temps libre abondant, j'ai essayé de repérer les éléments problématiques. En attendant, vous pouvez essayer de rebaser cygwin1.dll lui-même. Soyez averti, c’est un grand truc bien plus compliqué qu’il doit être - encore plus compliqué que de rebasonner tout le reste.

10
Jim Schneider

Pour moi, la cause en était que git n’était pas installé via cygwin, bien que le téléchargement régulier soit effectué à partir de git-scm. Une fois que j’ai exécuté la configuration de cygwin, ajouta git, cela fonctionnait parfaitement.

9
Geoff Lentsch

Avez-vous cette erreur avec d'autres commandes? Avec git --version?

Essayez de relire Cygwin setup.exe et de réinstaller votre cygwin1.dll (le paquet est "cygwin", sous "Base") et votre paquet git (le paquet "git" sous "Devel") et de le redémarrer.

5
Keith Thompson

Dans mon cas, le redémarrage de l'ordinateur n'a pas fonctionné.

J'ai finalement trouvé que c'était dû à un conflit entre une installation de Msys (Installé quand j'ai installé les utilitaires git en ligne de commande). Si votre chemin d'accès système contient des répertoires avec une version de Msys, supprimez ces entrées de chemin d'accès et réessayez. Il semble que cygwin tente d'exécuter les exécutables à partir de l'installation de Msys et que le fichier .dll détecte un problème.

0
Jorge Torres

J'ai eu le même type d'erreur lorsque j'essayais de transmettre à un dépôt Git de Visual Studio 2017 à l'aide d'un script commençant par #!/Bin/sh de

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

Message d'erreur : 

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.      

J'ai essayé différentes solutions ci-dessus sans succès

Ce que j'ai fait pour résoudre le problème est de copier le contenu de:

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

Le problème sur mon ordinateur venait d'une incompatibilité de version sur sh.exe et la copie de ces fichiers a résolu le problème.

0
Xavave

Je sais que c'est un vieux fil, mais comme c'est le premier résultat sur cette question, j'aimerais ajouter ma résolution dans l'espoir que cela aide quelqu'un d'autre.

Tout d’abord, lancez cygcheck PROGRAMM, dans mon cas, j’avais un problème avec tar.exe et j’ai donc exécuté: cygcheck tar, la commande cygcheck indique les DLL utilisées.

Tout semblait correct dans cygcheck. J'ai donc décidé, sur la base des commentaires de Jim Schneider, de passer de la version 64 bits de Cygwin à la version 32 bits, qui a finalement résolu mon problème.

0

Pour moi, le problème était l’existence d’un ancien dossier C:\cygwin64. Renommer ce dossier n'était pas suffisant. Lorsque j'ai supprimé ce dossier, le problème a disparu. Je n'ai pas eu besoin de redémarrer après avoir supprimé le dossier C:\cygwin64.

0
Farrukh Najmi

Dans mon cas, le PATH dans les variables Environment était incorrect. Je l'ai déplacé un peu plus tôt dans le chemin (en m'assurant qu'il est défini avant le chemin git) De cette façon, cygwin dll était en faveur de git dll.

Par exemple; Le chemin de C:\Program Files\Git\usr\bin;C:\cygwin\bin;....__ a été changé en C:\cygwin\bin;C:\Program Filenter code herees\Git\usr\bin;...

L'environnement était Win7x86 et un redémarrage était nécessaire pour que le chemin mis à jour soit utilisé.

0
posix99