Don't know if this will be of help, but on further investigation the
problem seems to be some code that essentially does the following:
!$OMP PARALLEL DO
do i=1,n
do j=1,m
call sub(arg1,...)
end do
end do
!$OMP END PARALLEL DO
where subroutine sub allocates a temporary array:
subroutine sub(arg1,...)
real, intent(in) :: arg1
real, dimension(:), allocatable :: u
allocate(u(1:arg1))
...
deallocate(u)
end subroutine
The only backtrace I can get is:
Thread received signal SEGV
__cfree () in /lib/tls/libc-2.3.2.so
(idb) bt
#0 0x008a91f6 in __cfree () in /lib/tls/libc-2.3.2.so
#1 0x081bdf46 in opal_mem_free_free_hook () in <executable>
If I change the subroutine to make u have a fixed size larger than the
largest possible required value, it runs OK past that point (but then
tends to crash further on in the code with a similar sounding problem
in __cfree or somesuch).
|