web-dev-qa-db-fra.com

Erreur Cygwin: "-bash: fork: nouvelle tentative: ressource temporairement indisponible"

J'ai récemment réinstallé Cygwin sur mon ordinateur pour pouvoir accéder à plusieurs éléments de ligne de commande qui me manquaient. Je n’ai jamais eu de problèmes avec Cygwin, mais après cette réinstallation, un message d’erreur persiste après (presque) chaque commande entrée. Par exemple:

-bash-4.1$ wc m1.txt
      3 [main] bash 2216 child_info_fork::abort: data segment start: parent(0x26D000) !=     child(0x38D000)
-bash: fork: retry: Resource temporarily unavailable
2013930  4027950 74968256 m1.txt

Généralement, la commande est toujours exécutée (comme on le voit ci-dessus), mais pas toujours. Parfois, le message d'erreur apparaît plusieurs fois de suite (le nombre initial "3" deviendra alors "4" ou "2", notamment si je démarre une deuxième fenêtre Cygwin.

De plus, dès que je lance Cygwin, le message suivant s'affiche avant l'invite:

      3 [main] bash 6140 child_info_fork::abort: data segment start: parent(0x26D000)     != child(0x36D000)
-bash: fork: retry: Resource temporarily unavailable
-bash: fork: Resource temporarily unavailable
-bash-4.1$

Pour le moment, je suis en train de débattre de la question de savoir s'il faut désinstaller/réinstaller Cygwin à nouveau ou simplement afficher les messages d'erreur, mais j'étais curieux de savoir s'il pourrait y avoir un problème dont je ne suis pas au courant.

65
David C

(en supposant que Cygwin soit installé dans C:\Cygwin):

  1. Ouvrez le gestionnaire de tâches et fermez tous les processus qui semblent liés à Cygwin.
  2. Ouvrez C:\Cygwin\bin dans l'Explorateur Windows
  3. Vérifiez que dash.exe, ash.exe, rebase.exe et rebaseall existent dans ce dossier
    • Si l'un d'entre eux est manquant, réexécutez la configuration de Cygwin et sélectionnez les packages tiret, cendres et rebase.
  4. cliquez avec le bouton droit de la souris sur votre dossier C:\Cygwin, décochez la case Lecture seule (si elle est cochée), puis appuyez sur OK.
    • Lorsqu'une erreur relative à l'impossibilité de changer certains fichiers survient, sélectionnez "Ignorer tout". Attendez que ce processus soit terminé.
  5. Accédez à C:\Cygwin\bin dans l'Explorateur Windows.
  6. Cliquez avec le bouton droit sur dash.exe et cliquez sur "Exécuter en tant qu'administrateur". Une invite de commande doit apparaître avec rien d'autre qu'un $
  7. Tapez /usr/bin/rebaseall -v, appuyez sur Entrée et attendez que le processus soit terminé.
    • Si vous rencontrez des erreurs lors de l'exécution de processus Cygwin, recommencez l'étape 1. Si cela ne fonctionne toujours pas, redémarrez votre ordinateur en mode sans échec et essayez à nouveau ces étapes.
    • Un intervenant a noté que, selon vos paramètres, vous devrez peut-être taper cd /usr/bin && ./rebaseall -v au lieu.
  8. Essayez d'ouvrir à nouveau Cygwin.

Ce processus a fonctionné pour moi. J'espère que cela fonctionne pour vous aussi.

Source: http://cygwin.wikia.com/wiki/Rebaseall

118
Cody S

J'aimerais ajouter ce qui suit aux réponses ci-dessus, car c'est ce que je devais faire après la réinstallation de Cygwin:

Naviguez jusqu'au répertoire "/ usr/bin" (généralement, C:\cygwin\bin) et cliquez avec le bouton droit de la souris sur, Exécuter en tant qu'administrateur, le fichier: dash.exe. Ensuite, à l'invite $, tapez ce qui suit en appuyant sur Entrée après chaque ligne:

cd /usr/bin/
/usr/bin/peflags * -d 1
/usr/bin/rebaseall -v

Qu'est-ce qu'il fait est, il marque la DLL comme "rebase-possible", puis les rebase. Vous devez avoir peflags.exe en plus des fichiers ci-dessus (dans les réponses précédentes). Vous devrez peut-être redémarrer Windows après cette opération et vous devrez absolument vous assurer qu'aucun processus ni aucun service appartenant à cygwin n'est en cours d'exécution. (Utilisez le gestionnaire de tâches, supprimez tous les processus associés, puis, sous l'onglet services, recherchez tout service commençant par CYG et arrêtez-le.)

Après cela, j’ai pu faire fonctionner cygwin sans erreur de chargement des dll aux mauvaises adresses, telles que les erreurs de fourche, etc.

J'espère que cela aide les autres, car c'était difficile à trouver.

SOURCE: http://www.cygwin.com/faq.html#faq.using.fixing-fork-failures 
and the rebase README file.
13
Michieal

Pour ajouter d'autres réponses ici, nous avons rencontré le même problème, mais nous n'avons pas pu exécuter la commande rebase à partir du shell ash ou dash. Toutefois, lors du lancement de la commande à partir du shell de commande Windows, les éléments suivants ont fonctionné.

cmd /c "C:\cygwin64\bin\ash.exe /usr/rebaseall -v"

-v est d'obtenir une sortie verbeuse

5
timato

J'ai trouvé une autre information ici: http://cygwin.com/ml/cygwin/2014-02/msg00531.html Vous devez supprimer la base de données à /etc/rebase.db* et le faire dans un "cendres" windows: peflags * -d 1 rebaseall Cela fonctionne pour moi sur 2 serveurs.

3
Charly

J'ai résolu ce problème en redémarrant mon ordinateur. Probablement installé une mise à jour du pilote et gardé en veille au lieu d'arrêter.

2
Matt Bond

Si vous utilisez le programme Cygwin de Babun, essayez de lancer Cygwin après rebaseall en exécutant .babun\cygwin\cygwin.bat dans une invite de commande Windows ou dans l'Explorateur Windows.

Cela fonctionne pour moi (lors du lancement de la console par défaut de babun - menthe provoque une erreur de fourche).

1
songuke

Nous avons rencontré le même problème lors du chargement de Cygwin avec cygiconv-2.dll et sans chargement dans le terminal Cygwin, mais après la désactivation de mon antiVirus (il était spécifiquement Ad-aware), le problème a été résolu et Cygwin a fonctionné correctement.

1

Rebaseing n'a pas aidé dans mon cas. En plus de ce que d’autres ont suggéré, j’ai remarqué que la réduction de la longueur de la variable d’environnement PATH corrigeait le problème pour moi (et pour d’autres personnes aussi bien que visible depuis this answer) .

0
yugr

Ce problème est de nature intermittente et j'ai trouvé ce problème lorsque le réseau est trop lent pour se connecter à la machine distante sur AWS .... J'ai un script Shell qui s'exécute via Gitbash Shell et se connecte à l'instance AWS EC2 avec ssh ... .. La plupart du temps, il a fonctionné correctement mais 2 fois sur 100, il est entré dans ce problème bash: fork: relance: ressource temporairement indisponible .... Tuer le terminal MSYS2 à partir du gestionnaire de tâches aide à surmonter avec ce problème .... Le côté négatif est que vous devez exécuter les scripts depuis le début ...

0
Abhishek Jain

J'ai eu l'erreur sur win10 et j'essayais de rebase à c: avant d'installer. alors j'ai vu que le programme d'installation l'installait à la place de c:/Users/myuser, donc je copiais tous les fichiers de c:/Users/myuser vers c: .badun, puis redémarrez et ouvrez badun.bat

pas sûr si c'était sage son XD maintenant dupliqué ... mais alors cela a fonctionné à nouveau.

0
pachermann