« 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

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/47905/53774756

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

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