Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

Stack overflow error

Adrian_F_1
Beginner
685 Views

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?

0 Kudos
4 Replies
Les_Neilson
Valued Contributor II
685 Views
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
0 Kudos
Adrian_F_1
Beginner
685 Views
I removed the allocatable attributes, but I still get the stack overflow exception. Adrian
0 Kudos
Les_Neilson
Valued Contributor II
685 Views
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
0 Kudos
Adrian_F_1
Beginner
685 Views
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.
0 Kudos
Reply