Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: EWS4800でnamazu-2.0.12のコンパイル



寺西です。

村永さんの協力により、EWS4800 で namazu-2.0.13 がコンパイルできない、
無限ループに入るという問題を解決しました。

ここまでの経緯:
  ・2.0.10 以降の nmz/regrex.c のバージョンアップに伴い、NO_ALLOCA
    付きでも alloca が使われるようになっていました。
  ・通常の ./configure では alloca が見つからないので libucb.a を
    リンクするようにすると、コンパイルは通るようになりました。
  ・しかし、make check を実行すると途中で無限ループに入ることが
    わかりました。
  ・このため、nmz/regex.c に手を加え、alloca を使わない実装に変えた
    ところ、無限ループに入らず正常動作することが確認できました。

Tadamasa Teranishi wrote:
> 
> namazu-2.0.10 のころは、NO_ALLOCA で alloca を使わないようになって
> いました。また、NO_ALLOCA はデフォルトで設定されていました。
> このため、2.0.10 はコンパイルできたのでしょう。
> 
> その後、nmz/regex.c 1.5.8.2 の修正で、NO_ALLOCA の処理が消えて
> しまっています。
> alloca は互換性に問題のある関数で使用しない方が良いとされている
> ものですから、できれば NO_ALLOCA の処理を復活させたいものです。

ということで、alloca を使わないように修正したいと思います。
手元の環境でもう少しソースを書き換えた上で、まず HEAD 向けのパッチを
流す予定です。

ところで、OpenBSD がうまく動かないという話がありましたが、その時は
場当たり的な対応をしました。しかし、この問題も alloca を使って
いるからではないかと少し疑っています。
今は時間が取れないので、きちんと確認できませんが、その辺りも検証
したいと思っています。

> # 今では regex-ruby.c も増えているのですが...。

これは誤解でしたね。HEAD に Ruby のオリジナルソースを regex-ruby.c 
という名で入れているだけですね。

なお、2.0.13 に関しては 2.0.12 と同様に動かないということですので、
EWS4800の対応を見送ってリリースしました。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E