Stack overflow error

Stack overflow error

Bild des Benutzers Adrian F.

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 Beiträge / 0 neu
Letzter Beitrag
Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.
Bild des Benutzers Les Neilson

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

Bild des Benutzers Adrian F.

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

Bild des Benutzers Les Neilson

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

Bild des Benutzers Adrian F.

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.

Melden Sie sich an, um einen Kommentar zu hinterlassen.