Cygwinでpython
を実行すると、次のエラーが発生します。
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
それはどういう意味ですか、それを修正するにはどうすればよいですか?
問題を修正するには、rebaseall
パッケージからrebase
コマンドを実行する必要があります。
setup.exe
ユーティリティを使用してrebase
パッケージをインストールしますcygwin1.dll
を使用している実行中のすべてを閉じますrebaseall
と入力します通常、リベースが必要なのは、動的にロードされるライブラリーを変更するインストール済みパッケージがインストールされている場合のみです。 Cygwinインストールでパッケージをインストールまたはアップグレードした後は、ヒットしたエラーが表示されるのを待つのではなく、常にrebaseall
を実行するという悪い習慣を認めます。
そのエラーが発生した理由と、リベースによって問題がどのように解決されるかについては、 this post はこれについて述べています:
あなたはそれを逆に持っています。フォークは再配置を壊しません。移転はフォークを壊します。 Win32でフォークセマンティクスを実装するには、cygwin1.dllに非常に特別なメモリレイアウトが必要です。このメモリレイアウトが中断されると、フォークが壊れます。 cygwin1.dllを再配置すると、必要なメモリレイアウトが中断されます。 'rebaseall'は、衝突を回避するレイアウトにそれが知っているすべてのCygwin DLLを見つけるために最善を尽くします。これにより、必要なメモリレイアウトが維持されるため、forkはその機能を実行できます。
これは、ウイルススキャナーなどのサードパーティプログラムまたはVistaで導入されたDLLアドレスのランダム化機能のいずれかが、フォークできなかった方法でプロセスに干渉したことを意味します。
rebaseall
ユーティリティを使用してDLLを固定し、問題を回避できます。デフォルトでインストールされます。見る rebaseall --help
の使用方法、および/usr/share/doc/Cygwin/rebase-3.0.1.README
詳細については。それでも効果がない場合は、peflagsall
を試してみる価値があります。
「numpy」をコンパイルした後も同じ問題が発生しました。影響を受けるDLLはmtrand.dllでした。シンプルな
$ /bin/rebaseall
動作しませんでした。
影響を受けたdll(この場合はtime.dll)が実際に「リベース」されているかどうかを調べます。
$ /bin/rebaseall -v
そうでない場合は、影響を受けるDLLの完全パスを含むリストを作成します。例えば。:
$ find /lib -name 'time.dll' > /tmp/mydll.txt
ファイルには、1行に1つずつ、より多くのDLLが含まれている場合もあります。次に、
$ /bin/rebaseall -v -T /tmp/mydll.txt
上記のように、他のcygwinのものが実行されていません。これで、time.dllがリベースされるはずです(「通常の」リベースに加えて)。
(奇妙なことに、nt、windows2000、xpでcygwinを使用して10年間、私は1回だけ「リベース」する必要がありました。(64ビット)window-7を使用した1日では、これはすでに必要でした。)
問題に対する答えがあります。
ソース: https://github.com/joyent/node/wiki/Building-node.js-on-Cygwin-(Windows)
fatal error – unable to remap \?\C:\cygwin\lib\python2.6\lib-dynload\time.dll to same address as parent: 0×360000 != 0×3E0000
これはnode.jsの問題でもありません。ベースをインストール→まずsetup.exeを使用してリベースし、次にすべてのCygwinインスタンスを閉じます。ダッシュまたはアッシュ(Cygwinのインストールのbinディレクトリーにあります)を開始して、以下を実行します。
$ /bin/rebaseall -v
エラーなしで終了するはずです。上記の代わりに次のようなエラーが発生した場合:
rebaseall:'/cygdrive/c/Users/ADMINI~1/AppData/Local/Temp' is not writable
Cygwin Shellを開いて実行します。
$ chmod 777 ~/AppData/Local/Temp
シェルウィンドウを閉じて、上記の手順を繰り返します。完了したら、PCを再起動します。 rebaseallを使用する前に、開いているCygwinシェルをすべて閉じてください。