octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: moving toward a 3.0 release


From: John W. Eaton
Subject: Re: moving toward a 3.0 release
Date: Thu, 28 Sep 2006 11:58:44 -0400

On 28-Sep-2006, David Bateman wrote:

| John W. Eaton wrote:
| > On 28-Sep-2006, David Bateman wrote:
| > 
| > | Note that 1276 for me is a different line than in the eigs I sent as I
| > | modified the code to use new/delete.. In any case this line is
| > | 
| > |                 double *dr = new double [k + 3];
| > | 
| > | for me. However I saw exactly the same issue with
| > | 
| > |                 OCTAVE_LOCAL_BUFFER (double, dr, k + 3);
| > | 
| > | Note that the dneupd.f file suggests that dr should be "k+1" in size.
| > | However if I make it that small the crash happens at about the 4th
| > | iteration rather than the 10000-th.
| > 
| > I see that the array arguments to dneupd are declared like this:
| > 
| >       integer    iparam(11), ipntr(14)
| >       logical    select(ncv)
| >       Double precision 
| >      &           dr(nev+1)    , di(nev+1), resid(n)  , 
| >      &           v(ldv,ncv)   , z(ldz,*) , workd(3*n), 
| >      &           workl(lworkl), workev(3*ncv)
| > 
| > so maybe enabling bounds checking for this code would provide some
| > pointers (with g77, it is -ffortran-bounds-check or -fbounds-check)?
| > 
| > jwe
| > 
| 
| Its too late here to do that tonight after the 3am finish last night.
| I'll try this tomorrow night.. In any case if eigs isn't ready for
| 2.9.9, tough.. After I think of how long been in my devel/ folder,
| waiting for a 2.9.10 release is trivial..

OK.  I did some debugging, but I don't see the fix yet.  If I compile
ARPACK with -fbounds-check, I sometimes but unfortunately not always
see this error:

  Fortran runtime error: Array reference out of bounds for array 'v', upper 
bound of dimension 2 exceeded (in file 'SRC/dnaitr.f', at line 449)

That line is:

  call dcopy (n, resid, 1, v(1,j), 1)

with v declared as

  double precision v(ldv,k+np)

I inserted a print statement above the call to dcopy and found that
the error happens when k+np is 19 and j is 20.

Also, dnaitr is called from dnaup2, which has the same declaration for
v.  But dnaup2 is called by dnaupd, which has the declaration

  double precision v(ldv,ncv)

So something about the dimension of this variable seems wrong.

In another case, I saw

  Fortran runtime error: Array reference out of bounds for array 'h', upper 
bound of dimension 1 exceeded (in file 'SRC/dnapps.f', at line 553)

That line is:

  if ( h(j+1,j) .lt. zero ) then

which is in a loop from j = 1 to kev.  H is declared as

  double precision h(ldh,kev+np)

I don't know what the values were when this failure happened, as I
only saw this error once.  Seems bad.

jwe


reply via email to

[Prev in Thread] Current Thread [Next in Thread]