All articles in a thread |
---|
Sun Fortran 95 8.1上で構築した SADが Packages/init.nの読み込み中に 無限ループに入って起動しません 試験環境は、多和田さんが用意してくれた Solaris10/i386です > uname -a SunOS kcg-06 5.10 Generic i86pc i386 i86pc > /opt/SUNWspro/bin/f77 -V NOTICE: Invoking /opt/SUNWspro/bin/f90 -f77 -ftrap=%none -V f90: Sun Fortran 95 8.1 2005/01/07 DEBUG用のパッチを当てて GCCで構築した SADのログと比較して行くと SAD Interpreterが管理しているメモリを開放する様子が変です アドレスが一致しないのは問題ないですが、開放する object sizeや 積算の使用量統計が負になるのは明らかに異常な気がします --- DEBUG patch --- diff -ur trunk-404.orig/src/italoc.f trunk-404/src/italoc.f --- trunk-404.orig/src/italoc.f Fri Mar 18 13:20:12 2005 +++ trunk-404/src/italoc.f Fri Nov 18 11:37:38 2005 @@ -445,6 +445,7 @@ return endif m=ilist(1,ia-1) + write(*,*)'tfree: ia=',ia,' m=',m,' nnet=',nnet if(m .lt. 4)then if(m .ne. 0)then write(*,*)'tfree ',ia,m diff -ur trunk-404.orig/src/itfgeto.f trunk-404/src/itfgeto.f --- trunk-404.orig/src/itfgeto.f Fri Mar 18 12:01:31 2005 +++ trunk-404/src/itfgeto.f Fri Nov 18 11:39:15 2005 @@ -10,6 +10,7 @@ itfgeto=-1 return endif + write(*,*)'itfgeto: tfeval(',buffer(1:lrecl),')' m=0 v=tfeval(buffer(1:lrecl),lrecl,ipoint,m,irtype,ira,.true.,irtc) c write(*,*)'itfgeto ',ipoint,irtype,ira,irtc,m --- DEBUG patch --- |
*** Welcome to SAD Ver.1.0.8.19.3b Patch Rev.10 [2005-04-15 19:39 JST] *** *** Today: 11:53:03 Friday 11/18/2005 *** cpu time= 1.3085E-02(sec) dt= 13.085(msec) free area:: 16148 FFS ; 6 tfree: ia= 1738162 m= 262146 nnet= 262146 tfree: ia= 2000368 m= 524288 nnet= 524332 *** SADScript Initialization: /home/kekb/sad/trunk-404-sun/Packages/init.n *** itfgeto: tfeval( SetAttributes[{Constant,HoldFirst,HoldAll,HoldRest,HoldNone},Constant]; ) tfree: ia= 1755207 m= 9 nnet= 417107 tfree: ia= 1755196 m= 11 nnet= 417098 itfgeto: tfeval( SetAttributes[{Constant,HoldFirst,HoldAll,HoldRest,HoldNone},Constant]; ) itfgeto: tfeval( HoldPattern=Literal; ) tfree: ia= 1755268 m= 9 nnet= 417116 itfgeto: tfeval( HoldPattern=Literal; ) itfgeto: tfeval( SetAttributes[{Literal,HoldPattern},{HoldAll,Constant}]; ) tfree: ia= 1755286 m= 9 nnet= 417143 tfree: ia= 1755277 m= 9 nnet= 417134 itfgeto: tfeval( SetAttributes[{Literal,HoldPattern},{HoldAll,Constant}]; ) itfgeto: tfeval( True=1; ) tfree: ia= 1755304 m= 13 nnet= 417156 itfgeto: tfeval( True=1; ) itfgeto: tfeval( False=0; ) tfree: ia= 1755321 m= 13 nnet= 417173 itfgeto: tfeval( False=0; ) itfgeto: tfeval( INF=Infinity=Min[]; ) tfree: ia= 1755370 m= 9 nnet= 417218 tfree: ia= 1755361 m= 9 nnet= 417209 tfree: ia= 1755356 m= 5 nnet= 417200 tfree: ia= 1755356 m= 1723232 nnet= 417195 tfree: ia= 1755356 m= 1726952 nnet= -1306037 tfree: ia= 1721770 m= 1721769 nnet= -3032989 tfree: ia= 2400369 m= 1723292 nnet= -4754758 tfree: ia= 1755356 m= 1730672 nnet= -6478050 tfree: ia= 1721770 m= 1724671 nnet= -8208722 tfree: ia= 2400369 m= 1733049 nnet= -9933393 |
*** Welcome to SAD Ver.1.0.8.19.3b Patch Rev.10 [2005-04-15 19:39 JST] *** *** Today: 11:52:47 Friday 11/18/2005 *** cpu time= 2.1287E-02(sec) dt= 21.287(msec) free area:: 16148 FFS ; 6 tfree: ia= 1735812 m= 262146 nnet= 262146 tfree: ia= 1997958 m= 524289 nnet= 524333 *** SADScript Initialization: /home/kekb/sad/trunk-404-gnu/Packages/init.n *** itfgeto: tfeval( SetAttributes[{Constant,HoldFirst,HoldAll,HoldRest,HoldNone},Constant]; ) tfree: ia= 2152858 m= 9 nnet= 417107 tfree: ia= 2152847 m= 11 nnet= 417098 itfgeto: tfeval( SetAttributes[{Constant,HoldFirst,HoldAll,HoldRest,HoldNone},Constant]; ) itfgeto: tfeval( HoldPattern=Literal; ) tfree: ia= 2152919 m= 9 nnet= 417116 itfgeto: tfeval( HoldPattern=Literal; ) itfgeto: tfeval( SetAttributes[{Literal,HoldPattern},{HoldAll,Constant}]; ) tfree: ia= 2153007 m= 9 nnet= 417213 tfree: ia= 2152998 m= 9 nnet= 417204 tfree: ia= 2152937 m= 9 nnet= 417195 itfgeto: tfeval( SetAttributes[{Literal,HoldPattern},{HoldAll,Constant}]; ) itfgeto: tfeval( True=1; ) tfree: ia= 2153035 m= 13 nnet= 417218 itfgeto: tfeval( True=1; ) itfgeto: tfeval( False=0; ) tfree: ia= 2153035 m= 13 nnet= 417236 itfgeto: tfeval( False=0; ) itfgeto: tfeval( INF=Infinity=Min[]; ) tfree: ia= 2153084 m= 9 nnet= 417281 tfree: ia= 2153075 m= 9 nnet= 417272 tfree: ia= 2153070 m= 5 nnet= 417263 itfgeto: tfeval( INF=Infinity=Min[]; ) itfgeto: tfeval( Pi=ArcSin[1]*2; ) tfree: ia= 2153087 m= 13 nnet= 417288 itfgeto: tfeval( Pi=ArcSin[1]*2; ) itfgeto: tfeval( E=Exp[1]; ) tfree: ia= 2153104 m= 13 nnet= 417305 itfgeto: tfeval( E=Exp[1]; ) ..... |
italoc回りにも鼠取りを仕掛けてみました --- DEBUG patch --- --- src/italoc.f.orig Fri Nov 18 11:45:44 2005 +++ src/italoc.f Fri Nov 18 14:03:25 2005 @@ -3,6 +3,26 @@ implicit none include 'inc/TFCBK.inc' include 'inc/TFMEM.inc' + integer*4 n,italoc0 + italoc=italoc0(n) + write(*,*)'italoc: ia=',italoc,' n=',n,' nnet=',nnet + return + end + + integer*4 function italoca(n) + implicit none + include 'inc/TFCBK.inc' + include 'inc/TFMEM.inc' + integer*4 n,italoca0 + italoca=italoca0(n) + write(*,*)'italoca: ia=',italoca,' n=',n,' nnet=',nnet + return + end + + integer*4 function italoc0(n) + implicit none + include 'inc/TFCBK.inc' + include 'inc/TFMEM.inc' integer*4 n,m,ic1,i,n1,ic,m1,ip0,ip,ip1,ic2 n1=max(n,3) m=n1+1 @@ -26,7 +46,7 @@ endif ilist(1,ic-1)=m nnet=nnet+m - italoc=ic + italoc0=ic return endif ic1=i+min(m,12) @@ -52,7 +72,7 @@ call tsetindexhash1(ic+m,i-icp-m+1) ilist(1,ic-1)=m nnet=nnet+m - italoc=ic + italoc0=ic return endif enddo @@ -81,7 +101,7 @@ else maxic=i endif - italoc=ic + italoc0=ic return endif enddo @@ -109,7 +129,7 @@ endif ilist(1,ip-1)=m nnet=nnet+m - italoc=ip + italoc0=ip return elseif(m1 .ge. m+4)then ilist(2,ilist(1,ip))=ilist(2,ip) @@ -129,7 +149,7 @@ call tsetindexhash(ip+m,m1-m) ilist(1,ip-1)=m nnet=nnet+m - italoc=ip + italoc0=ip return endif ip=ilist(1,ip) @@ -138,11 +158,11 @@ if(ip1 .gt. 0)then go to 1000 endif - italoc=-1 + italoc0=-1 return end - integer*4 function italoca(n) + integer*4 function italoca0(n) implicit none include 'inc/TFCBK.inc' include 'inc/TFMEM.inc' @@ -170,7 +190,7 @@ endif ilist(1,ic-1)=i-i+m nnet=nnet+ilist(1,ic-1) - italoca=ic + italoca0=ic return endif ii=i+1 @@ -192,7 +212,7 @@ endif ilist(1,ic-1)=ii-i+m nnet=nnet+ilist(1,ic-1) - italoca=ic + italoca0=ic return endif ii=ii+1 @@ -214,7 +234,7 @@ endif ilist(1,ic-1)=ii-i+m nnet=nnet+ilist(1,ic-1) - italoca=ic + italoca0=ic return endif ii=ii+1 @@ -236,7 +256,7 @@ endif ilist(1,ic-1)=ii-i+m nnet=nnet+ilist(1,ic-1) - italoca=ic + italoca0=ic return endif endif @@ -263,7 +283,7 @@ call tsetindexhash1(ic+m,i-icp-m+1) ilist(1,ic-1)=m nnet=nnet+m - italoca=ic + italoca0=ic return endif enddo @@ -292,7 +312,7 @@ else maxic=i endif - italoca=ic + italoca0=ic return endif enddo @@ -320,7 +340,7 @@ endif ilist(1,ip-1)=m nnet=nnet+m - italoca=ip + italoca0=ip return elseif(m1 .ge. m+4)then ilist(2,ilist(1,ip))=ilist(2,ip) @@ -340,7 +360,7 @@ call tsetindexhash(ip+m,m1-m) ilist(1,ip-1)=m nnet=nnet+m - italoca=ip + italoca0=ip return endif ip=ilist(1,ip) @@ -349,7 +369,7 @@ if(ip1 .gt. 0)then go to 1000 endif - italoca=-1 + italoca0=-1 return end --- DEBUG patch --- |