[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. 環境. なにか変な環境変数があるのではないか
上川