From: Tanaka Akira Date: 2005-12-28T12:45:08+09:00 Subject: [ruby-dev:28142] Re: ia64-hpux11.23/socket.sl: this executable file can't load extension libraries (LoadError) In article <200512280307.jBS37nnj005909@pbsg500.nifty.com>, WATANABE Tetsuya writes: > 今朝(12/28)の ruby 1.9 HEAD でコンパイルしてみました。 > > ia64.s は GNU as に依存しているようです。 > as は GNU as を利用するとコンパイルできるのですが HP-UX > の as だとエラーになるようです。 > > ------------------------------ia64.s でのエラー > $ make > 省略 > as -o ia64.o ia64.s > ia64.s:10: error 4001: syntax error > ------------------------------ > > ------------------------------GNU as でのアセンブル > $ /usr/local/bin/as -o ia64.o ia64.s > ------------------------------ よくわかっていないのですが、TestDrive の HP-UX マシンの /usr/ccs/bin/as ではコンパイルできます。 td176> uname -a HP-UX td176 B.11.23 U ia64 0391833941 unlimited-user license td176> /usr/ccs/bin/as ia64.s また、10行めというのは .pred.safe_across_calls p1-p5,p16-p63 という行だと思うのですが、.pred.safe_across_calls は Itanium Assembler for Itanium(R) Processor Architecture に載っているので、GNU 拡張ってことはないと思うのですが。 http://www.intel.co.jp/design/itanium/downloads/asmusrgd.htm それはそれとして、たぶんその行は削除してもいいと思うので、削 除してアセンブルできるか試していただけませんか? > その後 make を続けると ext/dl で gcc 前提のマクロでコン > パイルに引っかかります。ext/dl は gcc のみサポート? dl は x86 以外にはやさしくないので、個人的には、うまくいかな い場合はコンパイルしないことにしています。 > ....................................../home/tetsu/src/ruby19.6/lib/generator.rb:131:in `callcc': failed to allocate memory (NoMemoryError) > ruby のプロセスの状態を確認していたら 600MB 以上の目盛り > を確保するところまで確認できたので、上記の上限までメモリ > を使って落ちたみたいです。 これは TestDrive でも起きます。 まだちゃんと調べてはいないのですが、callcc で stack を save するところでメモリが足りなくなっていて、おそらく continuation が GC されてないんだと思います。 参考: [ruby-talk:127491], [ruby-core:4293] もし予測が正しければそれは callcc が癌なので、generator.rb を callcc じゃなくて thread で実装するのがいいのではないかと 思っています。 -- [田中 哲][たなか あきら][Tanaka Akira]