Cygwin erreur fatale impossible à refaire … Qu'est-ce que cela signifie?

Lors de l'exécution de python dans cygwin, j'ai l'erreur suivante:

  0 [main] python 6140 C:\cygwin\bin\python.exe: *** fatal error - unable to remap \\?\C:\cygwin\lib\python2.6\lib-dynload\time.dll to same address as parent: 0x2B0000 != 0x360000 Stack trace: Frame Function Args 00288E68 6102749B (00288E68, 00000000, 00000000, 00000000) 00289158 6102749B (61177B80, 00008000, 00000000, 61179977) 0028A188 61004AFB (611A136C, 6124112C, 002B0000, 00360000) End of stack trace 0 [main] python 9048 fork: child 6140 - died waiting for dll loading, errno 11 abort: Resource temporarily unavailable 

Qu'est-ce que cela signifie, et que dois-je faire pour le réparer?

Vous devez exécuter la commande rebase package rebase pour résoudre le problème.

  1. Installez le package rebase à l'aide de l'utilitaire Cygwin setup.exe
  2. Fermez tout ce qui fonctionne qui utilise le cygwin1.dll
  3. Ouvrir une coquille Cygwin
  4. Tapez rebaseall à l'invite

La réinstallation n'est généralement requise que lorsque les paquets installés sont installés qui modifient les bibliothèques chargées dynamiquement. rebaseall une mauvaise habitude d'exécuter toujours rebaseall après l'installation ou la mise à niveau des paquets dans une installation Cygwin plutôt que d'attendre cette erreur que vous avez frappée pour apparaître.

Pour ce qui est de la raison pour laquelle vous avez eu cette erreur et de la façon dont le rebasement résout le problème, cette publication a ceci à dire à ce propos:

Vous l'avez à l'envers. Le boulonnage ne brise pas la relocalisation. La relocalisation casse la fourchette. Cygwin1.dll doit disposer d'une mise en mémoire spéciale pour implémenter la sémantique de la fourche dans Win32. Si cette disposition de la mémoire est perturbée, la fourchette se casse. Relocating cygwin1.dll perturbe la disposition de la mémoire requise. 'Rebaseall' fait de son mieux pour localiser toutes les DLL de Cygwin qu'elles connaissent dans une mise en page qui évite les collisions. Cela maintient la disposition de la mémoire requise, de sorte que la fourchette peut faire son travail.

Cela signifie que soit un programme tiers, tel qu'un scanner de virus, soit la fonctionnalité de randomisation de l'adresse DLL qui a été introduit dans Vista, ont entravé votre processus de manière à ne pas réussir.

L'utilitaire rebaseall peut être utilisé pour définir les DLL de sorte que le problème soit évité. Il est installé par défaut. Voir rebaseall --help vous à l'utiliser et /usr/share/doc/Cygwin/rebase-3.0.1.README pour plus de détails. Si cela ne vous aide pas, peflagsall est une autre peflagsall à essayer.

J'ai eu le même problème après avoir compilé "numpy". Die dl affecté était mtrand.dll. Simple

 $ /bin/rebaseall 

n'a pas fonctionné.

Ce qui a aidé était le suivant: Examinez si la dll affectée (dans ce cas time.dll) est généralement "rebase":

 $ /bin/rebaseall -v 

Sinon, créez une liste qui contient le chemin d'accès complet de la dll affectée. Par exemple:

 $ find /lib -name 'time.dll' > /tmp/mydll.txt 

Le fichier peut également contenir plus de dlls, un par ligne. Ensuite appeler

 $ /bin/rebaseall -v -T /tmp/mydll.txt 

Sans autre activité de cygwin, comme décrit ci-dessus. Le time.dll devrait maintenant être relaissé (en plus du rebaseall "normal").

(Étrange: dans 10 ans d'utilisation de cygwin avec nt, windows2000, xp, je devais "rebase" une seule fois. En un jour avec (64 bits) fenêtre-7, cela était déjà nécessaire.)

Il y a une réponse pour le problème.

Source: https://github.com/joyent/node/wiki/Building-node.js-on-Cygwin-(Windows)


Impossible de se soumettre à la même adresse que le parent

fatal error – unable to remap \?\C:\cygwin\lib\python2.6\lib-dynload\time.dll to same address as parent: 0×360000 != 0×3E0000

Ce n'est pas un problème avec node.js non plus. Installez base → rebase à l'aide de setup.exe, puis fermez toutes les instances de Cygwin. Démarrez le tableau de bord ou la cendre (situé dans le répertoire bin sous l'installation de Cygwin) et exécutez:

$ /bin/rebaseall -v

Il devrait finir sans erreurs. Si au lieu de cela, le résultat ci-dessus entraîne une erreur comme:

rebaseall:'/cygdrive/c/Users/ADMINI~1/AppData/Local/Temp' is not writable

Ouvrez un shell Cygwin et exécutez:

$ chmod 777 ~/AppData/Local/Temp

Fermez la fenêtre de votre shell et répétez les étapes ci-dessus. Une fois que vous avez terminé, redémarrez votre PC. N'oubliez pas de fermer tous les shells Cygwin ouverts avant d'utiliser rebaseall.