cygwinで unable to remap *.dll

 0 [main] zsh 4192 C:\cygwin\bin\zsh.exe: *** fatal error - unable to remap
 \\?\C:\cygwin\lib\zsh\4.3.11\zsh\zle.dll to same address as parent: 0x4A0000 !=
 0x6C4C0000

というようなエラーが出たり出なかったり出まくったり。
なんだろう?と思って検索してみたところ、
Hundred Threads: Cygwin: Unable to remap というページを発見、まさにそれでした。
上記ページに書いてある通り、以下の手順に従ってみると何事も無く動くように。

  1. cygwinセットアップユーティリティを起動して、rebaseパッケージがインストールされているか確認(手元の環境では意識せずにインストール済みだった)
  2. cygwinのプロセスをすべて終了させる (念のためタスクマネージャーで確認すること)
  3. コマンドプロンプトを起動して、cygwin\bin\フォルダへ移動し、.\ash.exe でシェルを起動
  4. ./rebaseall を実行して数秒待つ

その後、「cygwin rebaseall」という検索をしてみたところいろいろなパターンで同じことが起きるそうで、どれもこれも同様の手順で解決するようです。
これ自体はzshそのものとかの問題では無く、cygwinのforkの問題。ということのようです。


XS系のperlモジュールをインストールしたときも、dllが絡んだりすると同じことが起きるそうなので、そのときも慌てずにrebaseallするのが良いのだとか。


ちなみに、rebaseallスクリプトはash用シェルスクリプトだそうです。