Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
401 Views

forrtl: severe (174): SIGSEGV, segmentation fault occurred

Dear all,

I got stuck with the following error,

forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image              PC                Routine            Line        Source             
a.out              00000000004A9F95  Unknown               Unknown  Unknown
a.out              00000000004A7BB7  Unknown               Unknown  Unknown
a.out              000000000045DF54  Unknown               Unknown  Unknown
a.out              000000000045DD66  Unknown               Unknown  Unknown
a.out              000000000041DB96  Unknown               Unknown  Unknown
a.out              0000000000421460  Unknown               Unknown  Unknown

libpthread.so.0    00002B5FF42A8100  Unknown               Unknown  Unknown
a.out              0000000000406D84  Unknown               Unknown  Unknown
a.out              000000000040FA83  Unknown               Unknown  Unknown
a.out              00000000004027FE  Unknown               Unknown  Unknown
libc.so.6          00002B5FF44D6B15  Unknown               Unknown  Unknown
a.out              00000000004026E9  Unknown               Unknown  Unknown

I tried to follow the instruction here to solve it,

https://software.intel.com/en-us/articles/determining-root-cause-of-sigsegv-or-sigbus-errors

$ ifort -heap-arrays 256000000

$ ulimit -s unlimited

but none of the above methods worked.

Does anyone know how to deal with this?

Best regards,

Sean Lee

0 Kudos
7 Replies
Highlighted
Employee
401 Views

There is additional advice to still try in the cited article. As per Possible cause #3, add –g and –traceback compiler options and rerun. Those will help offer source file/line number information in the traceback you included in your post which should help identify the point of the failure and calling sequence in reaching that point. That information should offer insight about where in the program's source code you need to start investigating for out-of-bound references.

Review the details for the other Possible Causes #4 - #6 and try the –check bounds option mentioned #4. That may offer specific details about a particular array whose bounds were exceeded.

0 Kudos
Highlighted
Beginner
401 Views

Hi,

Many thanks!

I checked the bounds and it seems to me that the bounds are OK.

$ ifort -O2  -check bounds -g

$ ifort -O2 -g -traceback

the same error occurred,

Image              PC                Routine            Line        Source             
a.out              0000000000427DD9  Unknown               Unknown  Unknown
a.out              000000000043CA54  Unknown               Unknown  Unknown
a.out              000000000040305F  Unknown               Unknown  Unknown
a.out              00000000004178A6  Unknown               Unknown  Unknown
a.out              00000000004027FE  Unknown               Unknown  Unknown
libc.so.6          00007FCC85813B15  Unknown               Unknown  Unknown
a.out              00000000004026E9  Unknown               Unknown  Unknown

If I reduce the dimension of the largest array, it works. But I need the large array anyway.

The size of my array is 67000000*7

 

 

Kevin D (Intel) wrote:

There is additional advice to still try in the cited article. As per Possible cause #3, add –g and –traceback compiler options and rerun. Those will help offer source file/line number information in the traceback you included in your post which should help identify the point of the failure and calling sequence in reaching that point. That information should offer insight about where in the program's source code you need to start investigating for out-of-bound references.

Review the details for the other Possible Causes #4 - #6 and try the –check bounds option mentioned #4. That may offer specific details about a particular array whose bounds were exceeded.

0 Kudos
Highlighted
401 Views

>>The size of my array is 67000000*7

make it (these large arrays) allocatable, then allocate it at start of program.

Jim Dempsey

0 Kudos
Highlighted
Black Belt
401 Views

There are no line numbers displayed in the traceback, which indicates that there are a number of source files that you need to recompile with -traceback and -g. In other words, delete the .o files from your previous compilations and rebuild. Even after you do that, you will not see line numbers in the traceback for routines that are in non-traceback-enabled libraries and for the Fortran RTL and MKL libraries.

0 Kudos
Highlighted
Beginner
401 Views

Dear all, 

Many thanks, the above issues are solved by 

$ ifort -heap-arrays 256000000

$ ulimit -s unlimited

But I got stuck with another problem,

error #7983: The storage extent of the dummy argument exceeds that of the actual argument

I am using mpiifort to compile the code.

Best regards,

Xiangyu

 

0 Kudos
Highlighted
Black Belt
401 Views

You probably had some checking options turned on when you compiled one or more source files. Code such as

...
      real :: x(3),r, dummy
      ...
      call sub(x,3,r)
      ...
      call sub(dummy,-3,r)
      ...
      subroutine sub(x,n,r)
      dimension x(n)
      ..
      if(n > 0)then
          r=sum(x(1:n))
      else
          r=x(-n)
      endif
      ...

may work fine without checking, but with checking turned on you may see error messages.

0 Kudos
Highlighted
401 Views

The dummy argument uses the size (array size) as specified within the subroutine (either fixed literal or by way of passed in integer).

The actual argument has the size as known by the caller.

Your caller is making a call using an array (actual argument) that is smaller than that used by the subroutine/function.

*** This may mean that the subroutine/function will be writing past the end of storage of the affected argument.
*** You have a bug that must be fixed

Do not assume everything is good should the program run with the error message suppressed. Errors tend to expose themselves at inopportune times.

Jim Dempsey

0 Kudos