<div dir="ltr"><div>I'm trying to track down the cause of an inconsistency in valgrind's heap allocation analysis.</div><div><br></div><div>This arose when using the MPICH downloaded by PETSc. To reproduce, I run the following and note that the number of allocations and frees are different (yet all blocks are reported free).  <br></div><div><br>     printf "#include<mpi.h>\nint main(int a,char **b){MPI_Init(&a,&b);MPI_Finalize();}" > t.c && $PETSC_DIR/$PETSC_ARCH/bin/mpicc t.c && valgrind ./a.out</div><div><br></div><div>==8578== Memcheck, a memory error detector<br>==8578== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.<br>==8578== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info<br>==8578== Command: ./a.out<br>==8578== <br>==8578== <br>==8578== HEAP SUMMARY:<br>==8578==     in use at exit: 0 bytes in 0 blocks<br>==8578==   total heap usage: <b>1,979 allocs, 1,974 frees</b>, 4,720,483 bytes allocated<br>==8578== <br>==8578== All heap blocks were freed -- no leaks are possible<br>==8578== <br>==8578== For counts of detected and suppressed errors, rerun with: -v<br>==8578== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)<br></div><div><div><br></div><div>The above was generated on Ubuntu 18.04.2 LTS, using MPICH 3.3b1 as configured in the attached config.log (which was done automatically for me by PETSc master). <br></div><div><br></div><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">---------- Forwarded message ---------<br>Von: <b class="gmail_sendername" dir="auto">Smith, Barry F.</b> <span dir="auto"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span><br>Date: Mo., 22. Juli 2019 um 20:24 Uhr<br>Subject: Re: [petsc-dev] MPICH from --download-mpich reports inconsistent allocs/frees with valgrind<br>To: petsc-dev <<a href="mailto:petsc-dev@mcs.anl.gov" target="_blank">petsc-dev@mcs.anl.gov</a>><br>Cc: Patrick Sanan <<a href="mailto:patrick.sanan@gmail.com" target="_blank">patrick.sanan@gmail.com</a>>, Balay, Satish <<a href="mailto:balay@mcs.anl.gov" target="_blank">balay@mcs.anl.gov</a>><br></div><br><br><br>
  Bug report to MPICH.<br>
<br>
> On Jul 22, 2019, at 1:22 PM, Balay, Satish via petsc-dev <<a href="mailto:petsc-dev@mcs.anl.gov" target="_blank">petsc-dev@mcs.anl.gov</a>> wrote:<br>
> <br>
> Hm - I don't think we were monitoring the leaks via valgrind that closely.<br>
> <br>
> Looking at my old mpich install - I don't see a problem - so likely<br>
> its an issue with newer versions of mpich.<br>
> <br>
> Satish<br>
> <br>
> -------<br>
> balay@sb /home/balay/tmp<br>
> $ mpichversion <br>
> MPICH Version:        3.3<br>
> MPICH Release date:   Wed Nov 21 11:32:40 CST 2018<br>
> MPICH Device:         ch3:sock<br>
> MPICH configure:      --prefix=/home/balay/soft/mpich-3.3 MAKE=/usr/bin/gmake --libdir=/home/balay/soft/mpich-3.3/lib CC=gcc CFLAGS=-fPIC -g -O AR=/usr/bin/ar ARFLAGS=cr CXX=g++ CXXFLAGS=-g -O -fPIC F77=gfortran FFLAGS=-fPIC -g -O FC=gfortran FCFLAGS=-fPIC -g -O --enable-shared --with-device=ch3:sock --with-pm=hydra --enable-fast=no --enable-error-messages=all --enable-g=meminit<br>
> MPICH CC:     gcc -fPIC -g -O   -O0<br>
> MPICH CXX:    g++ -g -O -fPIC  -O0<br>
> MPICH F77:    gfortran -fPIC -g -O  -O0<br>
> MPICH FC:     gfortran -fPIC -g -O  -O0<br>
> MPICH Custom Information:     <br>
> balay@sb /home/balay/tmp<br>
> $ printf "#include<mpi.h>\nint main(int a,char**b){MPI_Init(&a,&b);MPI_Finalize();}" > t.c && mpicc t.c && valgrind ./a.out<br>
> ==9024== Memcheck, a memory error detector<br>
> ==9024== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.<br>
> ==9024== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info<br>
> ==9024== Command: ./a.out<br>
> ==9024== <br>
> ==9024== <br>
> ==9024== HEAP SUMMARY:<br>
> ==9024==     in use at exit: 0 bytes in 0 blocks<br>
> ==9024==   total heap usage: 1,886 allocs, 1,886 frees, 4,884,751 bytes allocated<br>
> ==9024== <br>
> ==9024== All heap blocks were freed -- no leaks are possible<br>
> ==9024== <br>
> ==9024== For lists of detected and suppressed errors, rerun with: -s<br>
> ==9024== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)<br>
> balay@sb /home/balay/tmp<br>
> <br>
> <br>
> <br>
> On Mon, 22 Jul 2019, Patrick Sanan via petsc-dev wrote:<br>
> <br>
>> It was pointed out to me that valgrind memcheck reports inconsistent heap<br>
>> usage information when running PETSc examples. All blocks are reported<br>
>> freed, yet the number of allocations and frees are different. My guess as<br>
>> to what's going on is that this is an MPICH issue, as I can reproduce the<br>
>> behavior with a minimal MPI program.<br>
>> <br>
>>> From the PETSc perspective, is this a known issue?  I'm wondering if this<br>
>> inconsistency was always there, whether it's worth looking into more, etc.<br>
>> <br>
>> Here's a 1-liner to reproduce, using a PETSc master build with<br>
>> --download-mpich (though note that this doesn't use anything from PETSc<br>
>> except the MPICH it builds for you).<br>
>> <br>
>>     printf "#include<mpi.h>\nint main(int a,char<br>
>> **b){MPI_Init(&a,&b);MPI_Finalize();}" > t.c &&<br>
>> $PETSC_DIR/$PETSC_ARCH/bin/mpicc t.c && valgrind ./a.out<br>
>> <br>
>> ==14242== Memcheck, a memory error detector<br>
>> ==14242== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.<br>
>> ==14242== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info<br>
>> ==14242== Command: ./a.out<br>
>> ==14242==<br>
>> ==14242==<br>
>> ==14242== HEAP SUMMARY:<br>
>> ==14242==     in use at exit: 0 bytes in 0 blocks<br>
>> ==14242==   total heap usage: *1,979 allocs, 1,974 frees*, 4,720,483 bytes<br>
>> allocated<br>
>> ==14242==<br>
>> ==14242== All heap blocks were freed -- no leaks are possible<br>
>> ==14242==<br>
>> ==14242== For counts of detected and suppressed errors, rerun with: -v<br>
>> ==14242== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)<br>
>> <br>
> <br>
<br>
</div></div></div></div>