[mpich-discuss] double free error after MPI run finished
John Bray
jbray at allinea.com
Sat Nov 9 02:19:58 CST 2013
Happy to validate any fix when its ready, not only for this test case,
but with our full DDT test suite.
John
On 8 November 2013 19:44, Antonio J. Peña <apenya at mcs.anl.gov> wrote:
>
> Hi John,
>
> You seem to describe a known bug:
>
> https://trac.mpich.org/projects/mpich/ticket/1932
>
> We've addressed it and the fix is waiting for review before going to the master
> branch. It would be nice if you could validate it once it's in master. May I
> contact you then to see if that addresses your problem?
>
> Antonio
>
>
> On Friday, November 08, 2013 05:43:29 PM John Bray wrote:
>> I've got some sample code that I'm using to test our debugger DDT. It
>> works on openmpi and intelmpi, but with all the MPICH series from
>> MPICH2 onwards to 3.1rc1, I get an error after MPI_FINALIZE. Our
>> memory debugging library claims its at
>>
>> SendqFreePool (dbginit.c:386) trying to free previously freed pointer
>>
>> with a stacktrrace
>> auditmpi
>> pmpi_finalize__
>> PMPI__finalize
>> MPIR_Call_finalize_callbacks
>> sendqFreePool (dbginit.c)
>>
>> Run from a raw mpirun command outside DDT
>>
>> *** glibc detected *** ./auditmpibad_f_debug.exe: double free or
>> corruption (fasttop): 0x1032a5c8 ***
>> *** glibc detected *** ./auditmpibad_f_debug.exe: double free or
>> corruption (fasttop): 0x104da5c8 ***
>> ======= Backtrace: =========
>> ======= Backtrace: =========
>> /lib/libc.so.6(+0xfe750e4)[0xf78e50e4]
>> /home/jbray/prog/mpich/mpich-3.1rc1/rhel-6-ppc64_ibm/install/lib/libmpich.so
>> .11(+0x1a8b1c)[0xfec8b1c] /lib/libc.so.6(+0xfe750e4)[0xf76c50e4]
>> /home/jbray/prog/mpich/mpich-3.1rc1/rhel-6-ppc64_ibm/install/lib/libmpich.so
>> .11(+0x1a8b1c)[0xfec8b1c] ... and so on
>>
>> I've configured with
>>
>> ./configure --prefix=$PWD/install --enable-shared --enable-fast=all
>> --enable-debuginfo
>>
>> and compile with
>>
>> mpif90 -o auditmpibad_f_debug.exe auditmpibad.F90 -O0 -g
>>
>> Its works with the ALLTOALLV only called once.
>>
>> Is this a bug or a misunderstanding on my part. The code is
>>
>> program auditmpi
>>
>> use mpi, only : &
>> MPI_COMM_WORLD, &
>> MPI_REAL, &
>> MPI_STATUS_SIZE, &
>> MPI_BSEND_OVERHEAD, &
>> MPI_SUM, &
>> MPI_UNDEFINED
>>
>> implicit none
>>
>> integer, parameter :: repeats=2
>>
>> integer :: rank, nproc,ierr,rpt
>> real :: input(100000),output(100000)
>> integer :: status (MPI_STATUS_SIZE)
>> integer :: statuses (MPI_STATUS_SIZE,repeats)
>> integer :: request
>> logical :: odd
>> integer, allocatable :: recvcounts(:),sendcounts(:),displs(:)
>>
>> call MPI_INIT(ierr)
>>
>> call MPI_COMM_RANK(MPI_COMM_WORLD, rank, ierr)
>> call MPI_COMM_SIZE(MPI_COMM_WORLD, nproc, ierr)
>>
>> if (rank == 0) print *,"auditmpi start"
>>
>> if (mod(rank,2) == 0) then
>> odd=.false.
>> else
>> odd=.true.
>> end if
>>
>> allocate (recvcounts(nproc))
>> recvcounts(:) = 100000/nproc
>>
>> allocate (sendcounts(nproc))
>> sendcounts(:) = 100000/nproc
>>
>> allocate (displs(nproc))
>> displs(:)=0 ! don't care if we overlap
>>
>> if ( .NOT. odd) then
>> call MPI_IRECV(output,size(output),MPI_REAL,rank+1,1,MPI_COMM_WORLD,
>> request, ierr)
>> end if
>> call MPI_BARRIER(MPI_COMM_WORLD,ierr)
>> if (odd) then
>> call
>> MPI_IRSEND(input,size(input),MPI_REAL,rank-1,1,MPI_COMM_WORLD,request,ierr)
>> end if
>> call MPI_WAIT(request,status,ierr)
>>
>> do rpt=1,2
>> call
>> MPI_ALLTOALLV(input,sendcounts,displs,MPI_REAL,output,recvcounts,displs,MPI
>> _REAL,MPI_COMM_WORLD,ierr) end do
>>
>> call MPI_BARRIER(MPI_COMM_WORLD,ierr)
>>
>> deallocate (recvcounts)
>> deallocate (sendcounts)
>> deallocate (displs)
>>
>> if (rank == 0) print *,"auditmpi finished"
>>
>> call MPI_FINALIZE(ierr)
>>
>> end program auditmpi
>>
>> John
>> _______________________________________________
>> discuss mailing list discuss at mpich.org
>> To manage subscription options or unsubscribe:
>> https://lists.mpich.org/mailman/listinfo/discuss
>
> _______________________________________________
> discuss mailing list discuss at mpich.org
> To manage subscription options or unsubscribe:
> https://lists.mpich.org/mailman/listinfo/discuss
More information about the discuss
mailing list