Namazu-devel-ja(旧)


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

Re: 妙なNMZ.pができる問題



寺西です。

Tadamasa Teranishi wrote:
> 
>  $ env PERL_HASH_SEED=0 make check
> 
> とすると All 47 tests passed になりました。
> 
> どうやら -DNO_HASH_SEED オプション付きでコンパイルされた Perl 5.8.1
> を使うか、環境変数 PERL_HASH_SEED を 0 にして使う必要がありそうです。
> 
> # ハッシュのランダム化で影響を受ける部分があったかなぁ!?

直接は影響なさそうです。Perl 5.8.3 で、

 $ env PERL_HASH_SEED_DEBUG=1 make check

で HASH_SEED を表示させましたが、ランダムな値が表示されていました。
もちろん、これでテストはパスします。

> ところで、Perl 5.8.3 では、環境変数の設定も -DNO_HASH_SEED オプション
> なしの状態でも All 47 tests passed になります。
> perldelta をきちんと調べていないのですが、5.8.2, 5.8.3 のどこかで
> 元に戻ったのかもしれません。

Perl 5.8.3 では PERL_HASH_SEED は健在で、デフォルトでランダムな値に
なります。
また、ランダムな値でも、PERL_HASH_SEED=0 (別に 0 でなくても良い)と
固定してもテストはパスします。

一方で Perl 5.8.1 だと PERL_HASH_SEED=0 (別に 0 でなくても良い)を
設定しないと、テストはパスしません。

このことから Perl 5.8.1 で HASH_SEED をランダムにした時に
何か他に影響する部分にバグが入ったが、後のバージョン(少なくとも
5.8.3)で修正されたということのようです。

Perl 5.8.1 ならとりあえず PERL_HASH_SEED=0 をつけると、そのバグ
は回避できそうです。(Perl 5.8.2 は不明です。)

# Known Problem に書くことにしましょう。
-- 
=====================================================================
寺西 忠勝(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