web-dev-qa-db-fra.com

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

Git m'a donné cette erreur

    0 [main] sh (47116) C:\Users\Marcus\AppData\Local\GitHub\PortableGit_c7e0cbde92ba565cb218a521411d0e854079a28c\usr\bin\sh.exe: *** fatal error - cygheap base mismatch detected - 0x11C7400/0x1297400.
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.
    0 [main] sh 42052 fork: child -1 - forked process 47116 died unexpectedly, retry 0, exit code 0xC0000142, errno 11
/mingw32/libexec/git-core/git-sh-setup: fork: retry: No child processes
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.
    0 [main] sh 42052 fork: child -1 - forked process 47116 died unexpectedly, retry 0, exit code 0xC0000142, errno 11
/mingw32/libexec/git-core/git-sh-setup: fork: retry: No child processes

Les choses que j'ai essayées incluent:

  • supprimer cygwin de C:\cygwin et C:\cygwin64 et réinstaller
  • réinstaller github à l'aide du programme de désinstallation et du programme d'installation.
  • désinstaller github et supprimer manuellement ses dossiers appdata locaux et itinérants, puis les réinstaller.
  • redémarrer l'ordinateur
  • rebaptiser C:\cygwin, il a réussi, mais n'a résolu aucun problème.
  • rebasant %appdata%\Local\Github\PortableGit_c7e...\. il a renvoyé l'erreur d'origine à nouveau.

pour référence, je suis sous Windows 10 64 bits. La seule autre question que j'ai pu trouver sur cette broche a été l'erreur que je n'arrive pas à trouver une solution: link here

Je ne suis pas sûr de savoir où aller à part de simplement réinstaller Windows, toute aide serait grandement appréciée.

18
Marcus Gosselin

Le shell de git-for-windows ( basé sur msys2 ) n'est pas conçu pour être exécuté dans Cygwin ou dans une installation différente de msys2.

GitHub Desktop utilise un ancien git-for-windows (2.5.3, sept. 2015)

Pour une session git bash, vous n'avez pas besoin de Cygwin ou de GitHub Desktop.

Décompressez le dernier git-pour-windows azrchive que vous pouvez trouver :

Ensuite:

cd c:\prgs\git
mklink /J latest PortableGit-2.7.0-64-bit
set GIT_ROOT=c:\prgs\git\latest
set PATH=%PATH%;%GIT_ROOT%;%GIT_ROOT%\bin;%GIT_ROOT%\cmd;%GIT_ROOT%\us`\bin

Vous pourrez alors taper git-bash pour lancer une session bash sous Linux.

Ou, à partir d'une session shell CMD régulière, vous aurez accès à plus de 200 commandes unix (curl, cat, xargs, ls, ...).
Pas besoin de Cygwin.

12
VonC

Désactiver Forcer la randomisation pour les images (ASLR obligatoire) dans Windows Defender Security Center de votre système . Ou exclure ASLR pour les exécutables git :

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

J'ai eu un problème très similaire, mais ni redémarrer ni réinstaller git ou cygwin n'a aidé. J'ai toujours eu:

      1 [main] sh (12220) C:\Program Files\Git\usr\bin\sh.exe: *** fatal error - cygheap base mismatch detected - 0x37C7408/0x38E7408.
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.
      0 [main] sh 6928 fork: child -1 - forked process 12220 died unexpectedly, retry 0, exit code 0xC0000142, errno 11
C:\Program Files\Git\mingw64/libexec/git-core\git-stash: fork: retry: Resource temporarily unavailable

Il m'a fallu un certain temps pour comprendre que cela avait commencé après avoir lu un bogue de Windows lié à "ASLR obligatoire à l'échelle du système" et à la manière dont les paramètres disponibles via l'interface utilisateur Windows ne définissaient pas les clés de registre appropriées. Après avoir rendu mon système plus sécurisé en ajoutant cette entrée de registre, cygwin forking a rompu:

Windows Registry Editor Version 5.00 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel]
"MitigationOptions"=hex:00,01,01,00,00,00,00,00,00,00,00,00,00,00,00,00

Source: Clarifier le comportement des ASLR obligatoires

Cela a eu pour résultat que git-stash ne fonctionnait plus, ni que cygwin fonctionnait (que j'ai installé plus tard .). La suppression de cette clé de registre a résolu le problème.

5
Jakob Ziegler

Le redémarrage a résolu le problème pour moi. J'ai probablement eu cette erreur à cause de la mise à jour de Git pour Windows. Essayez de redémarrer avant de faire l'une des choses folles!

4
goamn

OK pour moi une erreur similaire ffmpeg $ ./configure...

License: LGPL version 2.1 or later
Creating config.mak, config.h, and doc/config.texi...
      1 [main] cmp (5984) C:\Program Files\Git\usr\bin\cmp.exe: *** fatal error - cygheap base mismatch detected - 0x180326400/0x180330400.
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.

signifiait "vous essayez de construire avec MSYS2 mais vous échouez accidentellement sur certains fichiers git distribués cmp.exe, qui sont apparemment inutilisables" (voir la réponse de VonC).

Correction dans mon cas: installez-les dans MSYS2 proprement dit:

$ pacman -S make

$ pacman -S diffutils # for cmp package
2
rogerdpack

certains paquets dans MSYS2 que vous avez installés sont en conflit avec x:\cygwin\bin, supprimez donc simplement MSYS2 PATH dans l'environnement système

0
righere