(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