65 votes

Erreur Cygwin : "-bash: fork: reprise: Ressource temporairement indisponible"

J'ai récemment réinstallé Cygwin sur mon ordinateur afin d'accéder à plusieurs éléments en ligne de commande qui me manquaient. Je n'ai jamais eu de difficulté avec Cygwin auparavant, mais après cette réinstallation, un message d'erreur continue d'apparaître après (presque) chaque commande saisie. 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

En général, la commande s'exécute quand même (comme indiqué ci-dessus), mais pas toujours. Parfois, le message d'"erreur" se produit plusieurs fois de suite (le numéro initial "3" changera alors en "4" ou "2", notamment si je lance une deuxième fenêtre Cygwin.

Aussi, dès que je lance Cygwin, je reçois le message suivant 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$

Actuellement, je me demande si je dois désinstaller/réinstaller Cygwin à nouveau ou simplement vivre avec les messages d'erreur, mais je me demandais s'il pouvait y avoir un problème dont je ne suis pas conscient.

2 votes

J'ai trouvé un problème similaire ici Avez-vous un logiciel de protection/antivirus installé? Si oui, avez-vous essayé de le désactiver juste pour le test, voire même de le désinstaller (voir le lien). Jetez également un œil ici et ici

120voto

Cody S Points 1806

(en supposant que Cygwin est installé à C: \ Cygwin):

  1. Ouvrez le Gestionnaire des tâches et fermez tout processus qui semble lié à 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 paquets dash, ash et rebase
  4. clic droit sur votre dossier C: \ Cygwin, décochez Lecture seule (si elle est cochée) et appuyez sur OK.
    • Lorsqu'une erreur concernant l'impossibilité de basculer certains fichiers apparaît, sélectionnez "Ignorer tout". Attendez que ce processus se termine.
  5. Accédez à C: \ Cygwin \ bin dans l'Explorateur Windows
  6. Faites un clic droit sur dash.exe et cliquez sur "Exécuter en tant qu'administrateur". Une invite de commandes devrait apparaître avec rien d'autre qu'un $
  7. Tapez /usr/bin/rebaseall -v, appuyez sur Entrée et attendez que le processus se termine.
    • Si vous obtenez des erreurs concernant des processus Cygwin en cours d'exécution, essayez à nouveau l'Étape 1. Si cela ne fonctionne toujours pas, redémarrez votre ordinateur en mode sans échec et réessayez ces étapes.
    • Un commentateur a noté qu'en fonction de vos paramètres, vous devrez peut-être taper cd /usr/bin && ./rebaseall -v à la place.
  8. Essayez d'ouvrir à nouveau Cygwin.

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

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

4 votes

Formidable. À l'étape 7, en raison du CHEMIN, j'ai dû entrer d'abord dans le répertoire: cd /usr/bin` et ./rebaseall -v.

1 votes

En exécutant rebaseall, il m'affiche toujours la même erreur de fork.

0 votes

Si vous obtenez des erreurs concernant des processus Cygwin en cours d'exécution, vous pouvez aller à C:\Cygwin\bin en utilisant cmd ou powershell de Windows, puis exécuter bash.exe /usr/bin/rebaseall -v. Cela lancera bash.exe et exécutera la commande sans ouvrir un autre terminal.

13voto

Michieal Points 1

Je voudrais ajouter ce qui suit aux réponses ci-dessus, car c'est ce que j'ai dû faire après avoir réinstallé Cygwin :

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

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

Ce que cela fait, c'est marquer les dll comme "rebase-able", puis les rebase. Vous devez avoir peflags.exe en plus des fichiers mentionnés ci-dessus (dans les réponses précédentes). Vous devrez peut-être redémarrer Windows après avoir fait cela et vous devrez certainement vous assurer qu'aucun processus ni service appartenant à cygwin ne fonctionne. (Utilisez le gestionnaire des tâches, arrêtez tous les processus liés, puis sous l'onglet services recherchez tout service commençant par CYG et arrêtez-le.)

Après avoir fait cela, j'ai pu exécuter Cygwin sans erreurs concernant des dll chargées à de mauvaises adresses, comme des erreurs de fork, etc.

J'espère que cela aidera d'autres personnes, car cela a été difficile à trouver.

SOURCE: http://www.cygwin.com/faq.html#faq.using.fixing-fork-failures 
et le fichier README de rebase.

5voto

timato Points 184

Pour ajouter aux autres réponses ici, nous avons rencontré le même problème mais n'avons pas pu exécuter la commande de rebase à partir de l'invite ash ou dash. Cependant, lorsque nous avons lancé la commande à partir de l'invite de commande Windows cmd, cela a fonctionné.

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

-v est utilisé pour obtenir une sortie détaillée

0 votes

Pour moi, c'est /bin/rebaseall

3voto

Charly Points 31

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 procéder dans une fenêtre "ash" : peflags * -d 1 rebaseall Ça a fonctionné pour moi sur 2 serveurs.

2voto

Bomadeno Points 759

J'ai résolu ce problème en redémarrant mon ordinateur. Probablement installé une mise à jour de pilote et continué à utiliser le mode veille au lieu de l'arrêt.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X