Stack overflow error

Stack overflow error

I have a matrix copy routine in a module as follows:

      subroutine f_rmatrixCopy_1(fArr,tArr)
         real(8), allocatable :: fArr(:), tArr(:)
         tArr = fArr
      end subroutine f_rmatrixCopy_1

When I call with

      call f_rmatrixCopy_1(BVS,SAVBVS)

I get on the assignment line:

     forrtl: severe(170): Program Exception - stack overflow

Both BVS and SAVBVS are allocated and are the same size (259081)

However when I replace the assignment with:

         do i = 1, size(farr)
           tArr(i) = fArr(i)
         enddo

All works fine.  Why doesn't the assignment work?

5 post / 0 nuovi
Ultimo contenuto
Per informazioni complete sulle ottimizzazioni del compilatore, consultare l'Avviso sull'ottimizzazione

Unless you are doing the allocation in your f_rmatrixCopy_1 routine then you shouldn't need the allocatable attribute (as long as the arrays are already allocated)

Les

I removed the allocatable attributes, but I still get the stack overflow exception.
Adrian

Do you have heap arrays set to zero ? If not then set it to zero (Under Properties->Fortran->Optimization)
Under Linker->System do you have a stack reserve size set? If so what do you have?

Les

My stack was too small. But instead of increasing it, I'll use the second method as this won't run into the stack problem. Thanks.

Lascia un commento

Eseguire l'accesso per aggiungere un commento. Non siete membri? Iscriviti oggi