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