[SCore-users-jp] invoke()処理時のException Signalについて
青木
t-aoki @ pst.fujitsu.com
2004年 5月 17日 (月) 19:07:23 JST
亀山様
富士通プライムソフトテクノロジの 青木 です
On Mon, 17 May 2004 17:44:35 +0900
kameyama @ pccluster.org wrote:
> 亀山です.
>
> In article <20040517163407.8D1B.T-AOKI @ pst.fujitsu.com> 青木 <t-aoki @ pst.fujitsu.com> wrotes:
> > > (RHEL Workstation 2,1 だと static link していれば GR の値が同じなので
> > > 大丈夫だったのですが, dynamic link にしたら問題が発生しました.)
> > > score-src/SCore/mttl-ult/ult/stack.c
> > > の
> > > t->jmpbuf[0].__jmpbuf[1] = getGP(); /* global pointer save */
> > > の部分を
> > > t->jmpbuf[0].__jmpbuf[1] = ((long*)func)[1];
> > > に変更してみてください.
> > >
> > > もっとも RHEL3 ではテストしていないので, 別の理由かもしれません.
> > 変更してみましたが、残念ながら改善されませんでした。
>
> とすると, 別の理由ですね.
> -nockpt オプションをつけてコンパイルしても同じでしょうか?
同じでした。
> 同じとすると... One local node でしたら gdb が使用できると思うのですが,
> signal がおきたときの back trace をとれないでしょうか?
back trace を採取しました。
#7〜#10と同じフレーム情報が、#5000以降も表示されつづけていま
す。この時点で既に動きがおかしいということになるのでしょうか。
Attaching to program: /opt/score/score-src/SCore/scored/test/mpc++/signal/obj.ia64-redhat-linux2_4/signal.exe, process 17984
0x40000000001d4d31 in waitpid ()
(gdb) bt
#0 0x40000000001d4d31 in waitpid ()
#1 0x4000000000195310 in do_system ()
#2 0x4000000000016f70 in sc_inspectme (x_display=0x600000000003c8a0 "gdb /opt/score/score-src/SCore/scored/test/mpc++/signal/obj.ia64-redhat-linux2_4/signal.exe 17984\n", signal=11)
at ../libscio.c:249
#3 0x4000000000011fb0 in score_attach_debugger (message=0x600000000002b070 "\230001", signal=11) at ../usrmesg.c:266
#4 0x4000000000005080 in ult_exception (sig=11, code=145880, sc=0xa0000000000040c0, addr=0xc000000000000003 <Address 0xc000000000000003 out of bounds>) at ../mpcrt.c:127
#5 <signal handler called>
#6 _voidsinvoker0::invoke() () at mpcxx_mttl.h:2085
#7 0x40000000000034d0 in Sync<int>::read(int&) (this=0x0, ap=@0x0) at mpcxx_mttl.h:241
#8 0x40000000000034d0 in Sync<int>::read(int&) (this=0x0, ap=@0x0) at mpcxx_mttl.h:241
#9 0x40000000000034d0 in Sync<int>::read(int&) (this=0x0, ap=@0x0) at mpcxx_mttl.h:241
#10 0x40000000000034d0 in Sync<int>::read(int&) (this=0x0, ap=@0x0) at mpcxx_mttl.h:241
∫
#5000以降も同上
(gdb) up 6
#6 _voidsinvoker0::invoke() () at mpcxx_mttl.h:2085
2085 static void invoke() {
(gdb) list
2080 #endif
2081 };
2082
2083 class _voidsinvoker0 {
2084 public:
2085 static void invoke() {
2086 ULT_DEBUG( 0, "invoke() %d %s",__LINE__,__FILE__);
2087 printf("invoke() %d %s\n",__LINE__,__FILE__);
2088 voidmarshal0 *argp = (voidmarshal0 *) mpcGetArgp();
2089 int dummy;
(gdb)
(gdb) up
#7 0x40000000000034d0 in Sync<int>::read(int&) (this=0x0, ap=@0x0) at mpcxx_mttl.h:241
241 inline void read(ARG &ap) {
(gdb) list
236 return mpcSyncWrite((void*) buf, argp - buf, pe, mpcSync), ap;
237 }
238 #endif
239 }
240 inline ncaddr_t _getMpcSync() { return mpcSync; }
241 inline void read(ARG &ap) {
242 if (MPCXX_EXACTLY_SAME(pe)) {
243 mpcSyncRead((void*) &ap, pe, mpcSync);
244 }
245 #ifdef MPCXX_HETERO
(gdb)
以上ですが、よろしくお願い致します。
________________________________
(株)富士通プライムソフトテクノロジ 3開統)3開発部
青木 利宏 内線 7677-5214
E-Mail : t-aoki @ pst.fujitsu.com
SCore-users-jp メーリングリストの案内