[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: TDK 96M CF doesn't work?
> はじめまして、あおやまと申します。
はじめまして。
> しばらくディスクレス環境で遊んでいたのですが、TDK の Compact Flash を
> 入手したので、出来立ての 1.5_ALPHA snapshot (2000-06-20版)をインストー
> ルしようとしたところブート途中でデバッガに落ちてしまいました。
まずカードを 1 枚ずつさして、どちらが問題なのか確かめて
下さい。
次に、pbsdboot の options のテキストボックスに -d を指定して
起動し、すぐにデバッガに落ちたところで以下のようにデバッグ
フラグを設定して起動してみてください。なにか有用な情報が
得られるかも知れません。
db> w pcmcia_debug 1
db> w pcmciacis_debug 1
db> c
デバッガの出力を見ると、ne_pcmcia_match() という関数から
呼んだ strcmp() で NULL をアクセスしたようです。おそらく
strcmp() の 2 つの引数のうちどちらかに NULL が指定されたのです。
ne_pcmcia_match()は ne2000 ドライバが、カードを利用可能どうか、
カード名の文字列比較などで調べる部分です。
sys/dev/pcmcia/if_ne_pcmcia.c の ne_pcmcia_match() および
ne2000_match() というマクロ定義を見てみて下さい。
#define ne2000_match(card, fct, n) \
((((((card)->manufacturer != PCMCIA_VENDOR_INVALID) && \
((card)->manufacturer == ne2000devs[(n)].manufacturer) && \
((card)->product != PCMCIA_PRODUCT_INVALID) && \
((card)->product == ne2000devs[(n)].product)) || \
((ne2000devs[(n)].cis_info[0]) && (ne2000devs[(n)].cis_info[1]) && \
(strcmp((card)->cis1_info[0], ne2000devs[(n)].cis_info[0]) == 0) && \
(strcmp((card)->cis1_info[1], ne2000devs[(n)].cis_info[1]) == 0))) && \
↑このへんが怪しい?
> どこが怪しいのかヒントを頂ければ幸いです。
私は dumpcis をみてすぐにどこが怪しいのかわかりませんが、
カーネルのソースコードに printf を入れて再コンパイルすれば
色々な情報が表示できますので、それで調べていってはどうで
しょうか。
症状がかなりはっきりしているので、普通のアプリケーション
プログラムのデバッグと比べてもそれほど難しくないと思います。
症状を聞いた限りでは放置できるバグではないので、ぜひ
調べてみて下さい。
Takemura