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

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



平本と申します。

以前

Subject: [debian-users:45250] 正規表現処理が変になっている環境について
|  現在 i386版 unstable を使用していますが、しばらく前から一部ツー
|ルの正規表現処理がおかしい状態が続いています。

という質問をして色々助言をいただきました。ちょっと間があいてしまい
ましたが、あれから色々追試を行い、どうやら「本体の何らかの故障」と
いう結論に至ったので、報告しておきます。

==========

機種: SHARP Mebius MURAMASA PC-MM70G (CPU: Transmeta Efficeon TM8000)
OS: Debian GNU/Linux unstable

==========

現象: sed や less 等、libc6 の正規表現ライブラリを利用するプログラ
ムが正常に動作しない。再現性100%。2005年8月頃から発生。

% echo A=B | /bin/sed.orig -e 's/=.*$/a/'
A=B

==========

追試内容1: MURAMASA を付属のクレードルに挿して Direct HD という機
能を使うと、HDD の内容を USBマスストレージクラスとして他のコンピュー
タから参照することができます。これを利用して別の Linux 機で 
MURAMASA の HDD をマウントして /lib/tls/libc-2.3.5.so の MD5 のハッ
シュを確認してみましたが、問題ありませんでした。

==========

追試内容2: 今まで入っていなかった libc6-i686 をインストールしてみ
ましたが sed の動作はおかしいままでした。

% ldd /bin/sed.orig
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7eaa000)
        /lib/ld-linux.so.2 (0xb7feb000)

==========

追試内容3: 古い libc6 のアーカイブを 2.3.4-1 から 2.3.5-3 まで取得
して LD_PRELOAD で libc.so.6 を変更しても sed の動作はおかしいまま
でした。

% env LD_PRELOAD=/home/hiramoto/trash/2.3.4-1/lib/libc.so.6 ldd /bin/sed
        /home/hiramoto/trash/d/2.3.4-1/lib/libc.so.6 (0xb7ed0000)
        /lib/ld-linux.so.2 (0xb7feb000)
        linux-gate.so.1 =>  (0xffffe000)

% echo A=B | env LD_PRELOAD=$cwd/2.3.4-1/lib/libc.so.6 /bin/sed -e 's/=.*$/a/'
A=B

==========

追試内容3: 古い sed (3.0.2-8) を取得して確認した所、このバージョン
は re_search ではなく regexec を使用しているのですが、やはり同じ現
象が出ました。

% echo A=B | sed302-8/bin/sed -e 's/=.*$/a/'
A=B

% echo A=B | ltrace sed302-8/bin/sed -e 's/=.*$/a/'
(略)
regexec(0x804e900, 0x804e870, 10, 0xbffff938, 0) = 1 ←マッチする場合は 0 を返すようです。
fwrite("A=B", 1, 3, 0xb7fdc5c0)                  = 3

==========

追試内容4: Windows XP とデュアルブートにしており普段 Windows はまっ
たく使用しないのですが、いつの間にか Windows Update ができない状態
でした。また Windows XP でソフトのインストーラが正常に動作しない場
合もありました。Windows と本体のどちらが壊れているのか確認するため、
リカバリCD を使って Windows のプレインストール状態に戻してみると、
Windows 初回起動時の設定の最後でブルースクリーンになり、再起動する
と chkdisk 後同じ所から始まって再びブルースクリーン、を繰り返す状
態になっていました。

==========

追試内容おまけ: KNOPPIX での起動を試みてみましたが、起動してすぐ画
面が真っ黒になり正常に起動しませんでした(テキストモードでの起動も
同じ)ので、KNOPPIX での検証は諦めました。なお KNOPPIX 同梱の 
memtest86 も実行してみましたが、メモリエラーはありませんでした。

==========

以上のことより

・バイナリが壊れたり、侵入されてバイナリをごっそり書き換えられてた
  りということではない。
・どうも特定のコードを実行した際におかしな動作をするのではないか?
・マニュアルに書いてある操作で Windows のリカバリができないのは故
  障といえるだろう。

と判断しました。しょうがないので修理に出そうかと思っています。個人
的には、夏の暑さのせいで TM8000 の CMS が一部壊れてしまったのでは
ないかと思っていますが、真相は不明です。