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

[OSASK 1216] Re: ieatta0.



  おはようございます、川合です。


Koyanagi Masaaki さんは 2000/11/01 20:41:26 の「[OSASK 1214] Re:
 ieatta0.」で書きました:

>>   これはバグに肉薄できるご報告である可能性が高いのですが、肝心の
>> CS:EIPが無くて、この情報を利用できません。もし、メモなどが残って
>> いましたら教えていただきたいです。
>前回はメモるのを忘れてました。
>ABALL1 がからむと必ず INT 0x0D が出るので、今回は
>MUSIC1
>ABALL1
>と起動した時のダンプを記録しました。
    (引用後略)

  ありがとうございます。おもいっきり厄介なバグの首根っこを押さえ
る、すばらしいご報告でした。これでバグは1つつぶせました。

  でも、一番致命的なやつは、これが原因ではないようです。だいぶ追
いつめつつあるのですが、まだどこが悪いのか解明できていません。

  TAPI内に1つの変数と1つのフラグがあって、フラグは変数の値が有
効であるときにセットされるようになっています。この2つは必ず連動
しているはずなのに、連動していないんです。このフラグを立てる作業
はたった一つのルーチンでやっていて、そのルーチンが変数の値を有効
にもしているんです。・・・それなのに、なぜか、フラグが立っている
のに変数の内容が無効値になっていることがあるんです(そのルーチン
を通ったときは、必ず有効な値が設定されていることを確認しました。
また、無効値に戻す作業、フラグをおろす作業の方も大丈夫なようです
)。この食い違いが、どんどん全体を狂わせていき、最後にクラッシュ
するわけです。昨日は、そこまでは判明しました。

  なお、その食い違いが一番最初におきるのは、なんとANK16.FNTのロ
ード直前のようです。例外が出ますが、フォントが使えなくて、真っ黒
です(笑)。・・・でもこの時は、フラグの食い違いがどこからも参照
されずに済むので無難に通過しているようです。不幸中の幸いだったわ
けです。

  あー、いったい、プログラムのどこで勝手にフラグをいじっているん
でしょうねえ。・・・今日はそれを突き止めるために、IA32の必殺技「
デバッグレジスタ」を使うことから始めようと思っています。


  それでは。

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