サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
  
現: 2024-01-08 (月) 12:58:54 ゲスト ソース
Line 1: Line 1:
 +* 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
  

  • debug_NASK のバックアップ差分(No. All)
    • 現: 2024-01-08 (月) 12:58:54 ゲスト
トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。