- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi everybody,
I came across this issue when using different ifort compilers. I normally use ifort 10.0.023 in which case the following code compiles and runs normally. However, I had to change to a parallel computer where ifort 9.1. is installed and this time the code compiles normally but has run-time segmentation fault. I don't see where the error might be in the code, I don't know is it because of the fact that the functions are being passed as arguments or what.
If anybody has any ideas what the problem might be, it would be really helpful. The code is attached below. The run time error apparently occurs when function func isn't recognized in function hx. I compile with ifort -r8 -o test_ts fp_test_ts.f90.
The error I get is the following:
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
test_ts 0000000000403775 Unknown Unknown Unknown
test_ts 0000000000403453 Unknown Unknown Unknown
test_ts 0000000000403250 Unknown Unknown Unknown
test_ts 0000000000402C2E Unknown Unknown Unknown
test_ts 00000000004027D3 Unknown Unknown Unknown
test_ts 00000000004026AA Unknown Unknown Unknown
libc.so.6 00002B406E87F154 Unknown Unknown Unknown
test_ts 00000000004025E9 Unknown Unknown Unknown
I found a similar discussion on forum http://software.intel.com/en-us/forums/showthread.php?t=51159 where Steve said that there is a bug in the process of being fixed. Is this the case of the same/similar bug that has been fixed in newer versions of ifort?
Thanks,
Grgur
I came across this issue when using different ifort compilers. I normally use ifort 10.0.023 in which case the following code compiles and runs normally. However, I had to change to a parallel computer where ifort 9.1. is installed and this time the code compiles normally but has run-time segmentation fault. I don't see where the error might be in the code, I don't know is it because of the fact that the functions are being passed as arguments or what.
If anybody has any ideas what the problem might be, it would be really helpful. The code is attached below. The run time error apparently occurs when function func isn't recognized in function hx. I compile with ifort -r8 -o test_ts fp_test_ts.f90.
[plain]module utl implicit none contains function cft(a,b,n,func) implicit none real,intent(in) :: a,b integer,intent(in) :: n real :: cft(0:n) interface function func(x) implicit none real,intent(in) :: x(:) real :: func(size(x)) end function func end interface real :: th(0:n) th = b-a cft = func(th) end function cft end module utl module test_mod implicit none real :: ts(1) contains function FCD(func,t1,t2,M,N) result(Amn) implicit none real, intent(in) :: t1,t2 integer,intent(in) :: M,N complex :: Amn(-M:M,0:N) interface function func(x,t) real,intent(in) :: x(:),t(:) real :: func(size(t),size(x)) end function func end interface complex,parameter :: i = (0.,1.) real :: tD(0:M) complex :: FN(0:M,0:M) integer :: j,k tD = (t2-t1)*(/ (j, j=0,M) /) forall (j = 0:M,k = 0:M) FN(j,k) = -i*j*k Amn(0:M,:) = matmul(FN,Cn(tD,N)) Amn(-1:-M:-1,:) = conjg(Amn(1:M,:)) contains !----------------------------------------------------------------------------- function Cn(t,N) use utl, only : cft implicit none real,intent(in),dimension(:) :: t integer,intent(in) :: N real :: Cn(size(t),0:N),x(0:N) integer :: k1 forall (k1 = 0:N) x(k1) = 1.0*k1/(N+1) do k1 = 1,size(t) ts = t(k1) Cn(k1,:) = cft(x(0),x(N),N,hx) end do end function Cn !----------------------------------------------------------------------------- function hx(x) implicit none real,intent(in),dimension(:) :: x real,dimension(size(x)) :: hx real :: dum(1,size(x)) print *,' **** hx' print *,' ts = ',ts print *,' func(0.1,0.1) = ', func( (/0.1/), (/0.1/) ) dum = func(x,ts) hx = dum(1,:) end function hx end function FCD end module test_mod !***************************************************************************** program test_prog
use test_mod, only : FCD implicit none integer,parameter :: M = 1, N = 10 real,parameter :: a=0.0,b=1.0 complex :: Amn(-M:M,0:N) Amn = FCD(func,a,b,M,N) print *, 'Amn = ',Amn contains function func(x,t) implicit none real,intent(in) :: x(:),t(:) real :: func(size(t),size(x)) integer :: i do i = 1,size(t) func(i,:) = sin(t(i))*cos(x) end do end function end program test_prog[/plain]
The error I get is the following:
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
test_ts 0000000000403775 Unknown Unknown Unknown
test_ts 0000000000403453 Unknown Unknown Unknown
test_ts 0000000000403250 Unknown Unknown Unknown
test_ts 0000000000402C2E Unknown Unknown Unknown
test_ts 00000000004027D3 Unknown Unknown Unknown
test_ts 00000000004026AA Unknown Unknown Unknown
libc.so.6 00002B406E87F154 Unknown Unknown Unknown
test_ts 00000000004025E9 Unknown Unknown Unknown
I found a similar discussion on forum http://software.intel.com/en-us/forums/showthread.php?t=51159 where Steve said that there is a bug in the process of being fixed. Is this the case of the same/similar bug that has been fixed in newer versions of ifort?
Thanks,
Grgur
Link Copied
6 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't see anything wrong with the code. It could be there was a bug in 9.1 that you encountered - it isn't an issue I remember, not that that means anything. The issue you linked to is completely different - "segmentation fault" has an infinite number of possible causes. If you build with -traceback, is there more meaningful information as to where the error occurs?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Steve,
I've tried compiling with traceback, and this time it doesn't compile. This is the error I get, i must say I don't understand much of it.
test_ts: In function `__data_start':
(.data+0x8): multiple definition of `__dso_handle'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/crtbegin.o:(.data+0x0): first defined here
test_ts: In function `_init':
/usr/src/packages/BUILD/glibc-2.4/cc-nptl/csu/crti.S:25: multiple definition of `_init'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../lib64/../lib64/crti.o:/usr/src/packages/BUILD/glibc-2.4/cc-nptl/csu/crti.S:11: first defined here
test_ts: In function `_start':
(.text+0x0): multiple definition of `_start'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../lib64/../lib64/crt1.o:init.c:(.text+0x0): first defined here
test_ts: In function `main':
(.text+0xb8): multiple definition of `main'
/opt/intel/fce/9.1.040/lib/for_main.o:(.text+0x0): first defined here
test_ts: In function `_fini':
/usr/src/packages/BUILD/glibc-2.4/cc-nptl/csu/crti.S:37: multiple definition of `_fini'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../lib64/../lib64/crti.o:/usr/src/packages/BUILD/glibc-2.4/cc-nptl/csu/crti.S:11: first defined here
test_ts:(.rodata+0x9b08): multiple definition of `_IO_stdin_used'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../lib64/../lib64/crt1.o:(.rodata.cst4+0x0): first defined here
test_ts: In function `__data_start':
(.data+0x0): multiple definition of `__data_start'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../lib64/../lib64/crt1.o:init.c:(.data+0x0): first defined here
/tmp/ifortHF5NDF.o: In function `MAIN__':
fp_test_ts.f90:(.text+0x0): multiple definition of `MAIN__'
test_ts:(.text+0x100): first defined here
/tmp/ifortHF5NDF.o: In function `test_mod_mp_fcd_':
fp_test_ts.f90:(.text+0x1e6): multiple definition of `test_mod_mp_fcd_'
test_ts:(.text+0x2e6): first defined here
/tmp/ifortHF5NDF.o: In function `utl_mp_cft_':
fp_test_ts.f90:(.text+0xc12): multiple definition of `utl_mp_cft_'
test_ts:(.text+0xd12): first defined here
/tmp/ifortHF5NDF.o: In function `utl._':
fp_test_ts.f90:(.text+0xde2): multiple definition of `utl._'
test_ts:(.text+0xee2): first defined here
/tmp/ifortHF5NDF.o: In function `test_mod._':
fp_test_ts.f90:(.text+0xde4): multiple definition of `test_mod._'
test_ts:(.text+0xee4): first defined here
Is it helpful? I have compiled with ifort -r8 -o -traceback test_ts fp_test_ts.f90.
Grgur
I've tried compiling with traceback, and this time it doesn't compile. This is the error I get, i must say I don't understand much of it.
test_ts: In function `__data_start':
(.data+0x8): multiple definition of `__dso_handle'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/crtbegin.o:(.data+0x0): first defined here
test_ts: In function `_init':
/usr/src/packages/BUILD/glibc-2.4/cc-nptl/csu/crti.S:25: multiple definition of `_init'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../lib64/../lib64/crti.o:/usr/src/packages/BUILD/glibc-2.4/cc-nptl/csu/crti.S:11: first defined here
test_ts: In function `_start':
(.text+0x0): multiple definition of `_start'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../lib64/../lib64/crt1.o:init.c:(.text+0x0): first defined here
test_ts: In function `main':
(.text+0xb8): multiple definition of `main'
/opt/intel/fce/9.1.040/lib/for_main.o:(.text+0x0): first defined here
test_ts: In function `_fini':
/usr/src/packages/BUILD/glibc-2.4/cc-nptl/csu/crti.S:37: multiple definition of `_fini'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../lib64/../lib64/crti.o:/usr/src/packages/BUILD/glibc-2.4/cc-nptl/csu/crti.S:11: first defined here
test_ts:(.rodata+0x9b08): multiple definition of `_IO_stdin_used'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../lib64/../lib64/crt1.o:(.rodata.cst4+0x0): first defined here
test_ts: In function `__data_start':
(.data+0x0): multiple definition of `__data_start'
/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../lib64/../lib64/crt1.o:init.c:(.data+0x0): first defined here
/tmp/ifortHF5NDF.o: In function `MAIN__':
fp_test_ts.f90:(.text+0x0): multiple definition of `MAIN__'
test_ts:(.text+0x100): first defined here
/tmp/ifortHF5NDF.o: In function `test_mod_mp_fcd_':
fp_test_ts.f90:(.text+0x1e6): multiple definition of `test_mod_mp_fcd_'
test_ts:(.text+0x2e6): first defined here
/tmp/ifortHF5NDF.o: In function `utl_mp_cft_':
fp_test_ts.f90:(.text+0xc12): multiple definition of `utl_mp_cft_'
test_ts:(.text+0xd12): first defined here
/tmp/ifortHF5NDF.o: In function `utl._':
fp_test_ts.f90:(.text+0xde2): multiple definition of `utl._'
test_ts:(.text+0xee2): first defined here
/tmp/ifortHF5NDF.o: In function `test_mod._':
fp_test_ts.f90:(.text+0xde4): multiple definition of `test_mod._'
test_ts:(.text+0xee4): first defined here
Is it helpful? I have compiled with ifort -r8 -o -traceback test_ts fp_test_ts.f90.
Grgur
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You want instead:
ifort -r8 -traceback -o test_ts fp_test_ts.f90
ifort -r8 -traceback -o test_ts fp_test_ts.f90
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Sorry for that. Now the run-time error shows
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
test_ts 0000000000403785 test_modfcd_mp_hx 68 fp_test_ts.f90
test_ts 0000000000403453 utl_mp_cft_ 18 fp_test_ts.f90
test_ts 0000000000403250 test_modfcd_mp_cn 57 fp_test_ts.f90
test_ts 0000000000402C2E test_mod_mp_fcd_ 43 fp_test_ts.f90
test_ts 00000000004027D3 MAIN__ 85 fp_test_ts.f90
test_ts 00000000004026AA Unknown Unknown Unknown
libc.so.6 00002B66161DF154 Unknown Unknown Unknown
test_ts 00000000004025E9 Unknown Unknown Unknown
This is more understandable, and it points to the lines where function func is called. Any ideas?
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
test_ts 0000000000403785 test_modfcd_mp_hx 68 fp_test_ts.f90
test_ts 0000000000403453 utl_mp_cft_ 18 fp_test_ts.f90
test_ts 0000000000403250 test_modfcd_mp_cn 57 fp_test_ts.f90
test_ts 0000000000402C2E test_mod_mp_fcd_ 43 fp_test_ts.f90
test_ts 00000000004027D3 MAIN__ 85 fp_test_ts.f90
test_ts 00000000004026AA Unknown Unknown Unknown
libc.so.6 00002B66161DF154 Unknown Unknown Unknown
test_ts 00000000004025E9 Unknown Unknown Unknown
This is more understandable, and it points to the lines where function func is called. Any ideas?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Again, it looks as if it may be a compiler bug since fixed. The solution is obviously to update the compiler.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks Steve, at least I know I didn't go that crazy. I'll try to get it updated.
Grgur
Grgur

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page