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

[pbsd-mg2] Re: cache problem again



 > 私のMC-R700(メモリは32MB標準)で試してみたところ、CFをルートファイルシス
 > テムにした状態では、シングルユーザのshは起動しましたが、そこから他のコマ
 > ンドを実行すると、segmentation faultが発生して親のshが死んでしまいました。

その後、もうちょっとためしたかんじでは、cache の問題かどうかは
わかりませんが、file buffer が腐ることが多いみたいです。

 > # cache関係の問題はちょっとアドレスが変わっただけで発生しなくなったりす
 > # るので追及するのは結構大変です。

まさにこの通りで、printf を 1 つ入れただけで、症状はかわります。

症状としては、

  1. 一見なにも問題なし sh のプロンプトがでて ls とかできる
  2. /dev/console, init, sh などが error 13 または error 20 で not found
  3. sh などをさがすときに読み込んだディレクトリエントリがぜんぶゼロ
  4. init などがダンマリでエラーもなにも表示されない

などいろいろです。
うんよく debug write をいくつか入れた状態で上記 3 が発生したのですが、
そのときは、wdc_ata_bio_intr がそのバッファに対してデータを書き込んで
いないのに、バッファをディレクトリエントリとしてスキャンして、
中身がすべてゼロでエラーとなっていました。
つまり、実際の I/O を行なっていないのに、すでにバッファ内にデータが
読み込まれていると、勘違いしているようです。

wdc_ata_xxx が cache を flush しわすれ、とかではなく、
誰かがへんなアドレスにデータを書き込んだ結果、バッファチェーンが
壊れたとか、偶然バッファの読み込み済みフラグがセットされたとか
そんな感じでしょうか。(あくまでもたんなる感覚で言っています)

printf を追加すると症状が発生しなくなったりして、大変困っています。

土曜日は NetBSD の BOF なので、日曜日に続きを調べようとおもいます。
# -current に移行すれば治るかもしれないですが、ちょっと気持ちわるすぎ

Takemura