[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 メーリングリストの案内