[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 621] knimu5(Re: knimu4).



  こんばんは、川合です。


Myurika さんは 2000/05/12 19:19:05 の「[OSASK 619] Re: knimu4.」
で書きました:

>  というわけで、早速試してみました。
>  うーん、私がまず試してしまうのは鬼門なんでしょうか、やはりエラーメッセー
>ジを吐きました。

  うげげげっ・・・。ど、どうして・・・。

>  6回テストして、100%です。
>  表示される内容は多少違いまして、
>
>INT 0x0D
>CS:EIP 0050:000000C6 EC = 00000033
>
>EAX = 00002E92 ECX = 00000007 EDX = 000001B0 EBX = 00000009
>ESP = FFFFFF7C EBP = FFFFFFB8 ESI = 00000180 EDI = 000001C0
>
>あとは差分で
>
>EAX = 8FFFFFF8 ECX = 00000004 EDX = 00000200 EBX = 00000008
>EDI = 00000140
>
>EAX = 8FFFFFF7 ECX = 0000000F EDX = 00000200
>EDI = 00000140

  え、エラーコード 0x33!・・・えーと、うーんと、"無効命令"!?
そんなー、なんでだよう〜。

  ・・・失礼しました。ということで、knimu5です。これは、バグを修
正していません。っていうか、上記のエラーは僕に納得行かないのです
。うちのマシンではどうしても再現してくれないし、でもエラーが出る
以上、原因究明ができるので、できるだけやってやろうということなの
です。

  僕の予想では、なんかの拍子にあるルーチンが暴走して、プログラム
を書き換えてしまっているのだと思います。どのルーチンが書き換えて
いるのかを突き止めなくてはいけないのですが、全てのメモリアクセス
ルーチンのアクセスを見張るなんて、そうそうできるものではありませ
ん。・・・が、386ならできるんです。デバッグレジスタという、それ
はそれはありがたーい機能がありまして、そいつをONにしました。0050
:00000000C6をいじろうとしたルーチンを見つけ次第、エラー報告しま
す。

  ええと、knimu5からはエラーの表示が少しだけ改善されて、

INT 0x?? エラー名
CS:EIP = ????:???????? エラーコード
レジスタのダンプ

というふうになります。エラー名が出るっていうのが改善点です。・・
・が、障害報告ではエラー名を省略していいです。書くの面倒でしょ?

  それと、毎回たくさん書いていただくのは心苦しいので、頭のゼロは
全部省略していいです。つまり、今回の場合ですと、

INT 0x0D
CS:EIP = 50:C6    EC = 33
EAX = 2E92   ECX = 7   EDX = 1B0   EBX = 9
ESP = FFFFFF7C   EBP = FFFFFFB8   ESI = 180 EDI = 1C0

でいいです。大文字小文字も気にしないでかまいません。・・・ディス
クアクセスルーチンが安定したら、エラーログファイルを出力するよう
にしますが、それまでは手書きでお願いします。

  ・・・ところで、この謎の障害、Myurikaさん以外でも出るんでしょ
うか・・・?

  さてさて、うまくデバッグ例外に引っかかるでしょうか?・・・無理
だろうなあ、コードサイズ変わっちゃったし・・・。そういう意味では
このknimu5は完全に捨て駒で、knimu5でのエラーを元に、今度はコード
サイズを変えずにknimu6を作る予定です。


  それでは。

--
    川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.or.jp
Homepage http://www.imasy.or.jp/~kawai/