|
現: 2024-01-08 (月) 12:58:54 ゲスト |
| + | * NASKをデバッグするための一発企画ページ |
| + | -for hideyosiさん |
| + | -なんでRed Hatで保護例外が出るのか。これは恥だ。 |
| + | -対象ソースは、win32で作ったpcat版のfdcdrv.nasに限定(限定しないと原因が追求しにくいから)。 |
| | | |
| + | * 第一回試験 |
| + | -まずgo_0015のnaskのgcc版をwin32で作って、正常に生成できてOSASKがmakeできるかどうかテストしてもらえないでしょうか(MinGWを使う)。最初にmake cleanするといいでしょう。 |
| + | |
| + | -COLOR(#ff0000){ぐはぁ!! nask はコンパイルはできますが、OSASKをメイクすると、飛んでしまいます!} |
| + | |
| + | |
| + | -それがうまくいったら、以下に進みます。go_0015のdrv_stdc/boot.cが対象(on Red Hat)。 |
| + | -104行目を次のように書き換えてみる(書き足す)。 |
| + | |
| + | list1 = nask(src0, src1, list0, list0 + MAX_LSTSIZ); exit(0); |
| + | --この場合何も出力されません。問題は例外が起きて終了か、例外が起きずに終了か、そのどちらになるかです。要報告。 |
| + | -もし上記で例外が起きなければ104行目を元に戻して、今度は111行目を書き換え(書き足し)。 |
| + | |
| + | tmp1 = LL(list0, list1, tmp0, tmp0 + MAX_TMPSIZ); exit(0); |
| + | --この場合も何も出力されません。問題は例外が起きて終了か、例外が起きずに終了か、そのどちらになるかです。要報告。 |
| + | -もし上記で例外が起きなければ111行目を元に戻して、今度は118行目を書き換え(書き足し)。 |
| + | |
| + | dest1 = output(tmp0, tmp1, dest0, dest0 + MAX_BINSIZ, list0, list0 + MAX_LSTSIZ - 2); exit(0); |
| + | --この場合も何も出力されません。問題は例外が起きて終了か、例外が起きずに終了か、そのどちらになるかです。要報告。 |
| + | --COLOR(#ff0000){ここでエラーが起きました。 by hideyosi} |
| + | -これらがどういう結果になるかを聞いて、それからまた考えます。お暇なときにでも実験してください。 |
| + | -結果がどうであれ、テストが終わったらソースを元どおりにしておいてください。 |
| + | |
| + | *小柳レポートを当ててみる・・・ |
| + | -えーと・・・小柳さん、ご指南感謝です。・・・ですが、私の頭ではちょっと・・(^^;) |
| + | -こういうことでいいんでしょうか? |
| + | |
| + | 2490行目 UCHAR *srcp, *file_p, *string0 = NULL, *dest = dest0; |
| + | |
| + | |
| + | ・ |
| + | ・ |
| + | ・ |
| + | void put4b(unsigned int i, UCHAR *p) |
| + | { |
| + | 3812行目 if (p == NULL) return; |
| + | p[0] = i & 0xff; |
| + | ・ |
| + | ・ |
| + | ・ |
| + | -一応これで、OSASKのコンパイルは通ったのですが・・・・(まだテストしていません) |
| + | -テストしました。Linuxで作ったOSASKは、正常に起動できるようです。(ってことは、この修正であっているのかな??) |
| + | |
| + | * 第二回試験 |
| + | -修正個所は、go_0015のnask.cの2823~2824行目です。 |
| + | --修正前の状態: |
| + | |
| + | } |
| + | put4b(dest - string0, string0); |
| + | --修正後の状態: |
| + | |
| + | put4b(dest - string0, string0); |
| + | } |
| + | --これだけで直ると思いますが、いかがでしょうか?>hideyosiさん |
| + | --この修正をすれば、もちろん小柳さんパッチはいりません。 |
| + | |
| + | * hideyosiさんからのレス欄 |
| + | -RedHat上ですが、エラーは、どんなファイルを食わせても起こります。たとえば、 echo -n>aaa.nas nask aaa.nas と、これでもセグメンテーション違反になります。 -- [[hideyosi]] SIZE(10){2003-08-21 (木) 15:46:31} |
| + | -あ、ちなみに、 ↑ が文法的にあってないのはわかっています。いろんなファイルやなんやらを当ててみて、なにかパターンがないか探していた時の実験です。 -- [[hideyosi]] SIZE(10){2003-08-21 (木) 15:47:40} |
| + | -また、念のため、改行コードもいろいろ試してみたのですが、変わらないような・・・・ -- [[hideyosi]] SIZE(10){2003-08-21 (木) 15:49:15} |
| + | -あ!! いけね! 前後しちゃった。Win32まだやってません!!。すぐかかります -- [[hideyosi]] SIZE(10){2003-08-21 (木) 15:53:15} |
| + | -ちなみに、家ではOSASKをメイクしている場合、飛ぶのは base.nas base.exe base.lst の部分です。(WinでもLinuxでも) -- [[hideyosi]] SIZE(10){2003-08-21 (木) 16:14:14} |
| + | -win32でも飛びますか・・・。あれえ、じゃあ、うちで飛ばなかったのは僕の思い違いだったのかな。また気が向いたら、win32で実験してみます。 -- [[K]] SIZE(10){2003-08-21 (木) 16:20:13} |
| + | -とりあえず、outputにバグがあるみたいですね。base.nasで落ちるなら、今後はそれをテストターゲットにしましょう。base.nasの方が短いですから。 -- [[K]] SIZE(10){2003-08-21 (木) 16:22:00} |
| + | -gdb で追いました。 output() の string0 に値が設定されないまま、put4b(dest-string0, string0)が呼ばれることがあり、put4b()で落ちます。string0 = NULL で初期化して、put4b() の先頭で if (p == NULL) return; とすれば問題がなくなることを確認しました。 -- [[小柳]] SIZE(10){2003-08-21 (木) 18:04:24} |
| + | -小柳さんありがとうございます。たしかに、やばいところを見付けました。これだと確かにOSASKのmakeが失敗するはずです。ということで、訂正箇所を第二試験として書きます。 -- [[K]] SIZE(10){2003-08-21 (木) 19:57:48} |
| + | -どうもput4bを入れる場所を1行下にしてしまったのが、バグの原因だったようです。>小柳さん、hideyosiさん -- [[K]] SIZE(10){2003-08-21 (木) 20:07:48} |
| + | -いけました!!! RedHatとWin32、両方とも正常なOSASK(つーか・・・1バイトも違わないのでつが・・・)を生成できました。 -- [[hideyosi]] SIZE(10){2003-08-21 (木) 20:22:44} |
| + | -(´_ゝ`)キター!!!!感謝!!! -- [[(´_ゝ`)]] SIZE(10){2003-08-21 (木) 20:23:55} |
| + | -さっとく、GOのページのリニューアルと、Vineでの実験にとりかかります。 -- [[hideyosi]] SIZE(10){2003-08-21 (木) 20:24:39} |
| + | -2chで報告したいけどplalaなのでできません。。。 -- [[(´_ゝ`)]] SIZE(10){2003-08-21 (木) 20:25:45} |
| + | -うわ!! ちょうどかさなった? 顔文字さん、たぶんこれでいけたと思いますよ。 お待たせしました。レポートありがとう! -- [[hideyosi]] SIZE(10){2003-08-21 (木) 20:25:54} |
| + | -とりあえず、僕は自分の作ったソフトのバグが減ってうれしいです。みなさんご協力ありがとうございました。 -- [[K]] SIZE(10){2003-08-21 (木) 20:29:03} |
| + | -キター!!!!=>デキター!!!!(hideyosiさんじゃないのにここかいてよかったのかな?(汗 -- [[(´_ゝ`)]] SIZE(10){2003-08-21 (木) 20:29:05} |
| + | -っていうか、hideyosiさんと顔文字さんは登場頻度が高いので、自己紹介ページを是非作りましょう。そして[[members]]に登録。 -- [[K]] SIZE(10){2003-08-21 (木) 20:42:46} |
| + | |
| + | #comment |