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).

Reply via email to