web-dev-qa-db-fra.com

cause de la mise à jour cygwin "Erreur: impossible de créer un processus fils: ressource temporairement indisponible"

J'ai mis à jour mon fichier cygwin à l'aide de setup-x86_64.exe tool (version 2.873) sous Windows 7 . J'avais besoin d'installer des packages supplémentaires (principalement Zip/unzip, etc.). 

Depuis lors, je reçois les erreurs suivantes lorsque j'essaie d'exécuter le terminal Cygwin (le raccourci pointe vers C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -): 

Error: could not fork child process: Resource temporarily unavailable.
DLL rebasing may be required. See 'rebaseall / rebase --help'.

J'ai cherché en ligne comment exécuter la commande rebaseall qu'ils conseillent dans le message. La recommandation était essentiellement de démarrer cygwin/bin/dash.exe et d'exécuter:
bin/rebaseall Je l'ai fait plusieurs fois, j'ai également utilisé le commentaire -v et aucune erreur ne s'est produite. Je ne peux toujours pas démarrer cygwin. 

J'ai aussi essayé d'exécuter cygwin-x/XWin-server, rien ne se passe. 

J'ai regardé les journaux d'installation dans cygwin/var/log/setup.log Je ne vois aucune erreur.

J'ai essayé d'exécuter le programme d'installation plusieurs fois en réinstallant certains des paquets que j'avais déjà, mais cela n'a pas aidé. Des idées, comment puis-je le faire fonctionner?

13
Charbel

Un de mes collègues a des erreurs similaires lors de l'ouverture du terminal à partir de SourceTree (Mingw32) et a également des erreurs lors de la tentative de pull, rebase, etc. (tout ce qui n'est pas local). Il a résolu le problème en désinstallant Sourcetree, à l'aide de CCleaner pour nettoyer ses registres (il n'était pas sûr que cela soit nécessaire), puis il a redémarré et installé à nouveau Sourcetree.

Je sais que ce problème est légèrement différent du problème décrit par le PO, mais il pourrait toujours être résolu en procédant à une désinstallation/un nettoyage des registres, et cela pourrait également aider les futurs utilisateurs à trouver cette question avec le problème Sourcetree (comme je l'ai fait) .

Modifier: Un autre collègue avait également le problème, et il a réussi à le résoudre simplement avec un redémarrage sans aucune désinstallation ni utilisation de CCleaner.

5
Svend Hansen

Je souffre beaucoup de problèmes similaires récemment. Je n'ai pas pu déterminer la cause, que ce soit à cause d'un correctif récent de Windows 7 ou d'une mise à jour dans le dernier fichier cygwin. Je suis dans un environnement d'entreprise strictement contrôlé avec uniquement des droits élevés limités, de nombreux logiciels anti-malware et des lecteurs cryptés. J'utilise actuellement Cygwin 32 bits.

Les problèmes pour moi ont commencé après l'installation des paquets Git et Git-Svn, qui nécessitaient Perl, ainsi que de la mise à niveau de nombreux autres paquets Cygwin.

Rebaser en utilisant rebase-trigger ou rebaseall ne résout pas le problème pour moi. La réinstallation et la configuration n’ont pas non plus provoqué d’erreurs répétées dans le pahse de post-installation lorsqu’on essayait de créer le rebase lui-même.

Mon premier succès a été d'abaisser la version précédente de Perl, c'est-à-dire. en baisse de 5.22.2.1 à 5.22.1.2. Après quelques semaines, l'erreur est revenue, peut-être après une mise à jour et un redémarrage obligatoires de Windows.

Mon dernier succès a été obtenu en ignorant le script dash/rebaseall et en exécutant directement rebase.exe comme suit: -

  1. Créez un fichier qui répertorie tous les fichiers .dll de cygwin dans le répertoire/bin, à l'exception des fichiers cygwin1.dll et cyglsa.dll. $ cd /bin $ ls -1 *.dll | egrep -v '(cygwin1|cyglsa).*\.dll' >rebasedlls.txt
  2. Fermez tous les terminaux cygwin. Si des services en cours d'utilisation utilisent cygwin, assurez-vous qu'ils sont également arrêtés. Vérifiez TaskManager et arrêtez les processus si nécessaire.
  3. Ouvrez une fenêtre cmd.exe (il peut être utile d’utiliser les droits élevés que vous pouvez rassembler), changez le chemin Windows de votre répertoire cygwin/bin (c’est-à-dire le répertoire windows de cygpath -wa /bin). 
  4. Utilisez directement rebase.exe pour trouver l'adresse de base du fichier cygwin1.dll:

C:\apps\cygwin\bin> rebase.exe --info cygwin1.dll /usr/bin/cygwin1.dll base 0x61000000 size 0x00500000

  1. En utilisant cette adresse de base et la taille comme guide, j'ai choisi la valeur entière suivante comme adresse de base de base, 0x62000000 . Aucune raison particulière pour cela, juste un pressentiment. (Le script rebaseall utilise 0x70000000).
  2. Utilisez rebase.exe pour corriger tous les fichiers .dll répertoriés dans le fichier à partir de l'étape (1):

C:\apps\cygwin\bin> rebase -b 0x62000000 -4 -n -v -t -T rebasedlls.txt

Jusqu'ici, tout va bien, mon Cygwin est de nouveau en état de fonctionner.

2
Ed Randall

Voici le correctif.

  1. Accédez à vos paramètres Windows Defender Security Center.
  2. Cliquez sur App & Browser Control
  3. En bas, cliquez sur le lien "Paramètres de protection contre l'exploitation"
  4. Allez dans "Paramètres du programme" et cliquez sur le bouton "Ajouter un programme à Personnaliser" -> "Choisir le chemin exact du fichier".
  5. Accédez à "C:\Program Files\Git\usr\bin\sh.exe" et ajoutez-le.
  6. Remplacer et désactiver les éléments suivants: ASLR obligatoire, allocations de mémoire aléatoires (ASLR de bas en haut)
  7. Cliquez sur "Appliquer" et maintenant tout devrait bien fonctionner.

Ajoutez également ces autres fichiers binaires du même dossier: expr.exe, uname.exe, grep.exe, rm.exe.

Bonne chance,
Gabriel

1
Gabriel Bercea

Ce même message d'erreur exact a plusieurs causes, pas toutes liées à setup-x86_64.exe, bien que je l'aie vu dans ce contexte également. Mais si rebaseall n'a pas résolu votre problème, voici une suggestion qui pourrait fonctionner.

Dans le cas que j’ai vu ce matin, il s’est avéré que deux ou trois processus avaient continué à s’exécuter après ma sortie de l’émulateur de terminal menthe. Mon intuition est que ces processus zombies empêchent le recyclage de la console. Dans mon cas, les deux processus ont été déterminés expérimentalement, en examinant une liste de processus en cours pour les processus parasites qui ne sont plus nécessaires. J'ai trouvé les deux processus qui me bloquaient en consultant la liste des tâches en cours d'exécution.

C:\WINDOWS\system32>tasklist | grep Console

CobraWinLDTP.exe             31844 Console                    1     43,600 K
geckodriver.exe              52640 Console                    1     32,164 K

C:\WINDOWS\system32>taskkill /F /PID 31844
SUCCESS: The process with PID 31844 has been terminated.

C:\WINDOWS\system32>taskkill /F /PID 52640
SUCCESS: The process with PID 52640 has been terminated.

J'ai vu sur d'autres questions de stackoverflow que git est souvent le processus zombie qui cause ce symptôme (pour certains utilisateurs). Malheureusement, tout processus résiduel qui survit après la fermeture de votre session de console peut être à l'origine de ce problème. Vous devez donc expérimenter.

0
philwalk

J'ai redémarré 3 fois, et ensuite c'était bien. wtf Windows 7

0
Mladen

désinstallez-le, .__ et installez le logiciel 32 bits.

0
fxleyu

Il existe un utilitaire de rebase qui déclenche la rebase comme phase post-installation.

De tiret ou bash:

/usr/bin/rebase-trigger full

fermez tous les processus et réexécutez setup-x86_64.exe. 

0
matzeri