(toppers-users 2516) Tinet でバスエラーが発生

高橋祥士 staka @ scx.co.jp
2006年 9月 6日 (水) 17:59:50 JST


いつもお世話になっています、高橋@システムクリエイトです。

Tinet でデータを大量送信(約4KByte)するとバスエラーが発生します。
Jspカーネル、Tinet、アプリケーションのどれが原因か判らず困っています。
バスエラーが発生したときの状態は下記の通りです。

Program received signal SIGBUS, Bus error.
_kernel_mempfix_get_block (mpfcb=0x406ebdc, p_blk=0x4055ca0)
    at ../jsp1.4.2-tinet1.2.6/kernel/mempfix.c:121
121                     *p_blk = (VP) free;
(gdb) list
108     /*
109      *  固定長メモリプールからブロックを獲得
110      */
111     #ifdef __mpfget
112
113     BOOL
114     mempfix_get_block(MPFCB *mpfcb, VP *p_blk)
115     {
116             FREEL   *free;
117
118             if (mpfcb->freelist != NULL) {
119                     free = mpfcb->freelist;
120                     mpfcb->freelist = free->next;
121                     *p_blk = (VP) free;
122                     return(TRUE);
123             }
124             else if (mpfcb->unused < mpfcb->mpfinib->limit) {
125                     *p_blk = mpfcb->unused;
126                     mpfcb->unused = (VP)((char *)(mpfcb->unused)
127                                                     + mpfcb->mpfinib->blksz);
128                     return(TRUE);
129             }
130             return(FALSE);
131     }
132
133     #endif /* __mpfget */
134
(gdb) print free
$1 = (struct free_list *) 0x3d3dc596
(gdb) print *mpfcb
$2 = {wait_queue = {next = 0x406ebdc, prev = 0x406ebdc}, mpfinib = 0x404f264,
  unused = 0x405e5d0, freelist = 0x2122e001}
(gdb)

RAMは 0x04000000〜0x04100000 ですので、mpfcb->freelist の内容が異常に思えます。
アプリケーションでの設定により mpfcb->freelist が異常な値を取る事がありえるのか、
またそれはどういった条件でありえるのかが知りたいと思っています。

なお、当方の環境は下記の通りです。

開発環境: WindowsXP + CygWin + GDB
         コンパイラは HSB7616ITに付属のもの(GCC)を使用。

TOPPERS: Jsp1.4.2 + TINET1.2.6
         Jsp1.4 + TINET1.2 でも同様の現象

ターゲット: SH2, 北斗電子 HSB7616IT

どなたかご教授のほど、よろしくお願いします。

敬具
scscscscscscscscscscscscscscscscscscscscscscscscsc
        高橋祥士 (E-Mail staka @ scx.co.jp)
-------------------------------------------------
    株式会社システムクリエイト
    ホームページ http://www.scx.co.jp
scscscscscscscscscscscscscscscscscscscscscscscscsc