Git Extensions: Win32 erreur 487: impossible de réserver un espace pour cygwin le tas de l'erreur Win32 0
Git Extensions: Tout fonctionnait bien jusqu'à hier.
Mais du coup je fais cette erreur s'affiche lorsque j'essaie de tirer les dépôts en utilisant git extensions
C:\Program Files\Git\bin\git.exe pull --progress "origin"
Done
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x68560000, RegionSize 0x390000, State 0x10000
C:\Program Files\Git\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
Il se passe pour tous les dépôts que j'ai cloné.
Mais, mon git bash fonctionne bien.
Je n'ai pas la moindre idée de ce qui se passe. Aucune idée du pourquoi ce qui se passe?
- Cygwin est bizarre et utilise persistante de la mémoire partagée sections. Avez-vous essayé de redémarrer votre système?
- N'avez pas redémarré depuis quelques jours. Allons le faire tout de suite.
- Il a travaillé. Merci, peut-être que si vous poster une réponse, il sera utile pour les autres aussi.
- Je voulais juste dire que ce bug n'est pas spécifique à git et dans les mauvais jours cygwin se crash sur n'importe quel exécutable de la même façon, sans aucune raison apparente.
- OP, vous devez modifier la réponse sélectionnée à @Yirkha réponse, pour que l'on résout la cause racine du problème. Il peut enregistrer quelques vaines tentatives sur les futurs lecteurs (comme cela s'est passé pour moi).
Vous devez vous connecter pour publier un commentaire.
Cygwin utilise persistante de la mémoire partagée sections, qui peuvent à l'occasion être endommagé. La conséquence de ceci est que certains Cygwin programmes commencent à échouer, mais d'autres applications ne sont pas affectées. Depuis ces la mémoire partagée sections sont persistantes, souvent un redémarrage du système est nécessaire de les effacer avant que le problème ne peut être résolu.
J'ai eu le même problème. J'ai trouvé la solution ici http://jakob.engbloms.se/archives/1403
Pour moi la solution a été légèrement différente. Il a été
Avant de rebase dll, vous devez assurez-vous qu'il n'est pas en cours d'utilisation:
Et faire une sauvegarde:
Si la commande rebase échoue avec quelque chose comme:
Vous devrez effectuer les étapes suivantes dans l'ordre:
Si aucune question n'exécutez les commandes comme Administrateur
BaseAddress 0x68560000
dans le message d'erreur. J'ai donc relocalisée à 0x68560000, et maintenant ça fonctionne. Je ne sais pas pourquoi cela a fonctionné pour vous avec0x50000000
.msys-1.0.dll: skipped because wrong machine type.
tl;dr: Installer 64-bit Git pour Windows 2.
Détails techniques
Ce symptôme en lui-même n'a rien à voir avec l'image de bases de exécutables, corrompus Cygwin de la mémoire partagée des sections, des conflits de versions de Dll, etc.
C'est Cygwin code à défaut d'allouer un ~5 MO grande partie de la mémoire de son segment de mémoire à cette adresse fixe 0x68570000, alors que seulement un trou d'environ 2,5 MO était apparemment y sont disponibles. Le code peut être vu dans msysgit source.
Pourquoi est-ce que la partie de l'adresse de l'espace libre, non?
Il peut y avoir de nombreuses raisons. Dans mon cas, il y a quelques autres modules chargés à un conflit d'adresse:
La dernière adresse serait autour de 0x68570000 + 5 MO = 0x68C50000, mais il y a ces WOW64 liés à la Dll chargées de 0x68810000 vers le haut, qui bloquent la répartition.
Chaque fois qu'il y a certaines DLL partagée, Windows en général essaie de charger à la même adresse virtuelle dans tous les processus d'économiser de la relocalisation de la transformation. C'est juste une question de malchance que ces composants du système obtenu en quelque sorte chargé à un conflit d'adresse cette fois.
Pourquoi est-il Cygwin dans votre Git?
Parce que Git est riche d'une suite composée de quelques commandes de bas niveau et beaucoup de services publics, et principalement développés sur des systèmes de type Unix. Afin d'être en mesure de construire et de l'exécuter sans une réécriture, il faut au moins partielle d'un environnement de type Unix.
Pour accomplir cela, les gens ont inventé MinGW et MSYS - un ensemble minimal de créer des outils pour développer des programmes sur Windows dans un Unix-like de la mode. MSYS contient également une bibliothèque partagée, ce
msys-1.0.dll
, qui vous aide avec certains problèmes de compatibilité entre les deux plates-formes au cours de l'exécution. Et de nombreux éléments de ce ont été prises à partir de Cygwin, parce que quelqu'un a déjà eu à résoudre le même problème.Il n'est donc pas Cygwin, c'est de MinGW DLL d'exécution de ce comportement bizarre ici.
Dans Cygwin, ce code a effectivement beaucoup changé depuis que MSYS 1.0 - le dernier message de commit pour ce fichier dit "Importer Cygwin 1.3.4", qui est de 2001!
Les deux actuel Cygwin et la nouvelle version de MSYS - MSYS2 ont déjà une logique différente en place, qui, je l'espère, plus robuste. C'est seulement les anciennes versions de Git pour Windows qui ont été construites à l'aide de l'ancien cassé MSYS.
Propres solutions:
Hacky solutions:
PATH
peut parfois fonctionner, car il peut y avoir différentes versions demsys-1.0.dll
dans les différentes versions de Git ou autre MSYS les applications qui utilisent peut-être différente de l'adresse, de taille différente de ce tas etc.msys-1.0.dll
pourrait être une perte de temps, parce que 1) soit une DLL, il a déjà de l'information sur le déménagement et 2) "dans n'importe quelle version de Windows OS il n'y a aucune garantie que (...) DLL chargera toujours au même espace d'adressage" de toute façon (source). La seule façon de l'aider est de savoir si lamsys-1.0.dll
lui-même se charge au conflit d'adresse puis essayez d'utiliser. Apparemment c'est le cas parfois, comme c'est ce que le Git pour Windows les gars font automatiquement sur Les systèmes 32 bits.msys-1.0.dll
binaire à utiliser une valeur différente pour_cygheap_start
et que le problème est résolu immédiatement.cmder/vendor/git-for-windows
annuaire & renommé l'ancien dossier degit-for-windows-x86
. Si vous ouvrezcmder/vendor/git-for-windows
, vous verrez un dossiermingw32
, quel est votre indice que vous êtes en utilisant 32 bits. Dans le x64 Git, vous verrez un dossiermingw64
.Très simple verison de la rebase solution:
Allez dans le dossier où git est installé, tels que:
En maintenant la touche maj enfoncée et clic droit dans le dossier, vous devriez être en mesure d'ouvrir une invite de commande en tant qu'administrateur à partir de là (merci à https://stackoverflow.com/users/355389/darren-lewis pour ce commentaire),
Puis exécutez:
Ce qu'il est corrigé pour moi lorsque le redémarrage de l'approche n'a pas fonctionné.
Espère que cela aide.
J'ai vu le même message d'erreur après la mise à niveau de git1.8.5.2:
Simplement faire une recherche de tous les
msys-1.0.dll
sur votreC:\
lecteur, et faire de celui utilisé par Git vient en premier.Par exemple, dans mon cas, j'ai simplement changé l'ordre de:
En faisant le Git chemin
C:\prgs\git\PortableGit-1.8.5.2-preview20131230\bin\
venir en premier dans mon%PATH%
, le message d'erreur a disparu.Pas besoin de rebooter ou même de changer le DOS de la session.
Une fois le
%PATH%
est mis à jour dans cette DOS de la session, les commandes git juste travailler.Noter que carmbrester et Sixto Saez à la fois le rapport ci-dessous (dans les commentaires) d'avoir à redémarrage dans le but de résoudre le problème.
Remarque: tout d'Abord, en supprimant toute
msys-1.0.dll
, comme dans%LOCALAPPDATA%
Si le redémarrage ne résout pas le problème (comme suggéré par Greg Hegwill réponse) puis vérifiez votre CHEMIN de conflits d'installation(s) de l'msys-1.0.dll (et, éventuellement, d'autres liées à des Dll).
Dans mon cas en particulier de MinGW installation de la pme dispose d'une copie de la DLL dans ses
bin
répertoire (<MinGW_Install_Path>\msys\1.0\bin
), et elle a été inscrite dans le CHEMIN d'accès. Git estcmd
répertoire a été inscrite dans le CHEMIN, mais sonbin
ne l'était pas. (Git version de msys-1.0.dll est dans lebin
répertoire. Apparemment, l'installation par défaut de MSys-Git ne pas ajouter de sonbin
le CHEMIN.)Une solution temporaire a été d'ajouter de Git est
bin
répertoire du CHEMIN de sorte qu'il apparaisse avant de MinGW chemins. A plus de solution permanente impliquera probablement tri le chemin des conflits entre les de MinGW msys et Git et/ou la suppression de la double msys installations.)Veux juste partager mon expérience ici. Je suis tombé sur le même problème lors de la compilation croisée pour la plate-forme MTK sur un Windows 64 bits de la machine. MinGW et MSYS sont impliqués dans le processus de construction et ce problème a surgi. Je l'ai résolu en changeant la
msys-1.0.dll
fichier. Nirebase.exe
ni redémarrage du système a fonctionné pour moi.Puisqu'il n'est pas rebase.exe installé sur mon ordinateur. J'ai installé cygwin64 et utilisé le
rebase.exe
à l'intérieur:Si la relocalisation regardé succès, l'erreur est resté. Ensuite, j'ai couru
rebase
de commande à l'intérieur de Cygwin64 terminal et vous avez une erreur:Plus tard, j'ai essayé un couple d'adresse, mais aucun d'entre eux travaillaient. Alors j'ai fini par changer le
msys-1.0.dll
fichier et il a résolu le problème.Je suis tombé sur ce sujet aujourd'hui. Dirigé par Greg Hewgill de réponse, j'ai regardé les processus en cours d'exécution sur mon système pour voir si quelque chose a été "coincé" ou si d'autres utilisateurs ont été enregistrés dans la machine de faire quelque chose avec git. J'ai ensuite lancé cygwin (installé séparément) sur cette machine en particulier. Il a lancé ok. Je l'ai fermé et ensuite essayé le Git Extensions de nouveau (j'ai essayé une opération d'extraction) et cela a fonctionné. Vous ne savez pas si le lancement de cygwin effacé quelque chose qui a été partagé, mais c'est la première fois que j'ai rencontré cette erreur, et cela semblait le fixer pour moi.
J'ai eu le même problème, après quelques Windows 8.0 crash et de mise à jour, sur msys git 1.9. Je n'ai pas trouvé de msys/git dans mon chemin, donc j'ai juste ajouté ça à windows local de l'utilisateur envinroment paramètres. Il a travaillé sans redémarrer.
Fondamentalement, semblable à RobertB, mais je n'avais pas tout git/msys dans mon chemin.
Btw:
J'ai essayé d'utiliser git rebase -b blablabla msys.dll mais avait erreur "ReBaseImage (msys-1.0.dll) a échoué avec la dernière erreur = 6"
si vous avez besoin rapidement et n'ont pas le temps de débogage, j'ai remarqué "Git Bash.vbs" dans le répertoire Git succès commence shell bash.
c:\Program Files (x86)\Git\bin
de chemin et maintenant, je suis d'or.Cette erreur se produit très rarement sur ma machine Windows. J'ai fini par le redémarrage de la machine, et l'erreur a disparu.
J'ai rencontré ce problème witht LPCEXpresso bâtiment.si vous avez l'C:\MinGW\bin dans le CHEMIN. j'avais en quelque sorte de l'enlever pour se débarrasser de ce problème depuis quelques autres MinGW comme base trop
Pour résoudre ce problème, j'ai simplement laissé Tortoise Git installer sa mise à jour.
c:\msysgit\bin>rebase.exe -b 0x50000000 msys-1.0.dll
De supprimer les anciennes version de %USERPROFILE%\AppData\Local\SourceTree\app-x.x.x a fonctionné pour moi. Pas sûr de savoir comment il a été connecté à la ligne de commande git...