Vine Linux バグトラッキングシステム - Vine Linux
課題の詳細を表示
0000484Vine Linux1 バグ公開2007-02-21 19:562007-12-25 23:56
anonymous 
 
不明 
完了不明 
 
 
x86
grep-2.5.1-50vl2, howm
0000484: fgrepでの日本語検索時の不具合
環境はVine4.0(3.2からのバージョンアップ)です。PCはNEC Lavie M LM60H/7。
テストにVine3.2のIBM Thinkpad i1620も使用しています。

Vine4.0のfgrepコマンドで
  $ echo a | fgrep -i "あ"
のように"-i"オプションをつけて日本語で検索しようとすると処理が固まってしまいます。Vine3.2では問題なく処理できます。システムの文字コードはja_JP.eucJPですが、これも関連しているように思われます。

この問題により、howmにおいて.emacs.my.elに以下のように検索にgrepを使用する設定して検索すると処理が固まってしまい、検索できなくなります。
  (setq howm-view-use-grep t)
  (setq howm-view-grep-command "grep")
  (setq howm-view-fgrep-command "grep")
  (setq howm-view-grep-extended-option "-E")
  (setq howm-view-grep-fixed-option "-F")
現時点ではhowmの作者さんに応急的な対策をとってもらっており、howmでは検索できるようになっています。
http://howm.sourceforge.jp/cgi-bin/hiki/hiki.cgi?BugReportPaste [^]
設定されていません。
patch grep-2.5.1-egf-non-utf8-null-break.patch (348) 2007-03-19 22:14
http://mantis.vinelinux.org/file_download.php?file_id=131&type=bug
課題の履歴
2007-02-21 19:56anonymous新規課題
2007-03-19 22:14anonymous添付ファイル追加: grep-2.5.1-egf-non-utf8-null-break.patch
2007-03-19 22:14anonymousコメント追加: 0002428
2007-11-13 03:30daisukeバージョン4.0 => 4.0,4.1,VineSeed
2007-11-13 03:30daisuke状態新規 => テスト待ち
2007-11-13 03:30daisukeコメント追加: 0002429
2007-12-25 23:56kazutaka状態テスト待ち => 完了
2007-12-25 23:56kazutakaコメント追加: 0002430

コメント
(0002428)
anonymous   
2007-03-19 22:14   
> Vine4.0のfgrepコマンドで
> $ echo a | fgrep -i "あ"
> のように"-i"オプションをつけて日本語で検索しようとすると処理が固まってし
> まいます。Vine3.2では問題なく処理できます。システムの文字コードは
> ja_JP.eucJPですが、これも関連しているように思われます。
>

M.Hと申します。

echo AあA | grep -F -i あ
で試してみたんですが、確かに無限ループしてますね。
echo AあA | grep -F -i aあ
とか
echo AあA | grep -F -i あa
だと正常終了するのが奇妙です。

ja_JP.eucJPロケールな環境で、grepのオプションに-Fと-iを指定して、
検索文字列が全部マルチバイト文字だと無限ループするみたいです。
検索文字列が全部マルチバイト文字の時は、-iオプションを指定しない
ようにするのが現実的な解のような気もします。

ソースをのぞいてみたんですが、Fedoraのパッチが激しく当たっていて、
gdbでガラゴロ回してみても絶望的な雰囲気…
無限ループの原因は、grep-2.5.1-egf-speedup.patchのせいだと思います。
しかし、どこをどう修正すればいいのかが?????

とりあえず勘で、Fexecute関数の中のmbrlenの戻り値を
チェックしていないところにbreakを入れてみました。
手元の環境では特に問題は無さそうなんですが、
正直、副作用の方が心配です。
パッチを添付しますので、試してみたい方は試してみてください。
grep-2.5.1-50vl2.src.rpmへの追加パッチです。ではでは。
(0002429)
daisuke   
2007-11-13 03:30   
> とりあえず勘で、Fexecute関数の中のmbrlenの戻り値を
> チェックしていないところにbreakを入れてみました。
> 手元の環境では特に問題は無さそうなんですが、
> 正直、副作用の方が心配です。
> パッチを添付しますので、試してみたい方は試してみてください。
> grep-2.5.1-50vl2.src.rpmへの追加パッチです。ではでは。

遅くなりましたが、
VineSeed: grep-2.5.1-57vl1
Vine-4.x: grep-2.5.1-57vl0.1
でM.Hさんのパッチを適用しました。

4.x 向けは 4.2 test repo に入れておきますが、errata も
出すかもしれません。
(0002430)
kazutaka   
2007-12-25 23:56   
> 4.x 向けは 4.2 test repo に入れておきますが、errata も
> 出すかもしれません。

4.2 で対応されたので完了とします。

ハラダ