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

[debian-users:45265] Re: 正規表現処理が変になっている環境について



こんにちは,

> > 2. ltraceでトレースしてみて, その出力
> > (おそらく80行くらいなのでまるごとはりつけてもよいと思います)を確認してみてはいかがでしょうか.
> > 
> > re_set_syntax(0x10502c6, 0, 0x5362e0, 130081, 8)                                    = 0
> > re_compile_pattern(0x5362c0, 4, 0x536270, 130081, 8)                                = 0
> > re_search(0x536270, 0x5361b0, 3, 0, 3)                                              = 1
> 
> % echo A=B | env LC_ALL=C ltrace /bin/sed -e 's/=.*$//' > /dev/null
> 
> とした結果を添付します。自分でも比較してみましたが、以下のような違
> いがありました。
> 
> [問題のある環境]
> re_search(0x806e9a0, 0x806e958, 3, 0, 3)         = -1
> fwrite("A=B", 1, 3, 0xb7fdc5c0)                  = 3
> 
> [問題のない環境]
> re_search(0x806e9a0, 0x806e958, 3, 0, 3)         = 1
> fwrite("A=B", 1, 1, 0xb7fe25c0)                  = 1
> 
> 問題のある環境では re_search() での正規表現の検索に失敗して -1 が
> 返るので、そのため fwrite() で入力された 3文字すべてを出力している、
> 問題のない環境では検索に成功してインデックス 1 が返ってくるので、
> その値を fwrite() の引数に反映させて入力の一部だけを出力している、
> という違いがあることまでは分かりました。

glibcの regexpのマッチが違う回答を返している,ということしかわからないですね.

実行ファイルのmd5sumも同じだ,ということなので,差分はglibcでしょうかねぇ...

こちらではあいかわらず再現はできないので,下記を確認してみてはいかがでしょうか:


1. ファイル: 実はmd5sumの出力は嘘なのではないか?
knoppixなどからブートしてみて,libc.so.6などのファイルのmd5sumが同じであるか確認してみてはいかがでしょうか.

2. メモリ: 実行中になにか変なことがおきていないか?
re_searchだけが毎回失敗するような変なメモリエラーというのも不思議ですが.
knoppixなどからブートしてみて,同じマシンで同じエラーがおきないか,というのを確認してみるのも一つの手かもしれません.

3. 環境. なにか変な環境変数があるのではないか


上川