« PowerShell がステキ | Main | 一般意思2.0 »

Cygwinで"fatal error - unable to remap"と言われた

一月ほど前に仕事PCのHDDが飛んで、それに伴ってCygwinもインストールし直しました。そして、Cygwinが自動で入れてくれるRubyはまだ1.8なので、1.9.1を手でメイキンストールして、見た目は元気に動いてました。

ちょっと必要があってrakeを使いたくなり、gemからインストールして実行したら、ありゃりゃりゃ?

$ rake
cat meta.cfg diary/20120106.md |bluefeather -f document - |embeddingCSS.rb > diary/20120106.html
      3 [main] ruby 5536 C:\cygwin\usr\local\bin\ruby.exe: *** fatal error - unable to remap \\?\C:\cygwin\usr\local\lib\ruby\1.9.1\i386-cygwin\etc.so to same address as parent: 0x18CB0000 != 0x18D30000
Stack trace:
Frame     Function  Args
00229DD8  6102796B  (00229DD8, 00000000, 00000000, 00000000)
0022A0C8  6102796B  (6117EC60, 00008000, 00000000, 61180977)
0022B0F8  61004F1B  (611A7FAC, 61247CE4, 18CB0000, 18D30000)
End of stack trace
    540 [main] ruby 3988 fork: child 5536 - died waiting for dll loading, errno 11
(以下ずっーとエラー)

なんでしょう・・・?

ググってみると、Cygwinにはよくある話のようで、理屈はよくわからないんですがcygwinを全部止めて、ash.exeを起動し、そこから/bin/rebaseall -vすればいいらしいです。なるほど!

・・・ダメでした。

rebaseallするとC:\cygwin以下のいろんな*.dllがだーっと流れていくんですが、その中に/usr/local以下のものが見えません。

/bin/rebaseallはシェルスクリプトだったので、中身を見てみましょう。最終行でcleanup処理があるので、これをコメントアウトすると、処理したファイルリスト(rebase.lst)が$TMPに残るようです。見てみましたが、やはり、/usr/local以下のものなんてありません。

rebase.lstの作成方法を確認してみたら、こんな感じ

find /etc/setup -name '*.lst.gz' | xargs gzip -d -c |
  grep -E "\.($Suffixes)\$" |
  sed -e '/cygwin1\.dll$/d' -e '/cyglsa.*\.dll$/d' \
      -e '/sys-root\/mingw/d' -e 's/^/\//' \
      -e '/d?ash\.exe$/d' -e '/rebase\.exe$/d' >"${TmpFile}"

Cygwinさんはインストールしたファイルの一覧を/etc/setup以下に持っているんですね。初めて知りました。

このシェルには対象にしたいファイルリストを引数で渡せて、それを渡すと${TmpFile}の末尾にアペンドして実行するようです。

というわけで、以下の様に実行

/usr/bin/find /usr/local -name '*.so' > $TMP/ruby-so.lst
/bin/rebaseall -T $TMP/ruby-so.lst -v

これで動くようになりました。めでたしめでたし。

そして、全部片付いてから、http://d.hatena.ne.jp/basyura/20110706/p1に全部書いてあることがわかりました。まあ、そういうものだよねー(>_<)

|

« PowerShell がステキ | Main | 一般意思2.0 »

パソコン・インターネット」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Cygwinで"fatal error - unable to remap"と言われた:

« PowerShell がステキ | Main | 一般意思2.0 »