Hi
I regularly use valgrind to check for leaks, but i ignore the leaks
clearly created by OpenMPI,
because i think most of them happen because of efficiency (lose no
time cleaning up unimportant leaks).
But i want to make sure no leaks come from my own apps.
In most of the cases, leaks i am responsible for have the name of one
of my files at the bottom of the stack printed by valgrind,
and no internal OpenMPI-calls above, whereas leaks clearly caused by
OpenMPI have something like
ompi_mpi_init, mca_pml_base_open, PMPI_Init etc at or very near the bottom.

Now i have an application where i am completely unsure where the
responsibility for a particular leak lies. valgrind  shows (among
others) this report

==2756== 9,704 (8,348 direct, 1,356 indirect) bytes in 1 blocks are
definitely lost in loss record 2,033 of 2,036
==2756==    at 0x4005943: malloc (vg_replace_malloc.c:195)
==2756==    by 0x4049387: ompi_free_list_grow (in
/opt/openmpi-1.4.2.p/lib/libmpi.so.0.0.2)
==2756==    by 0x41CA613: ???
==2756==    by 0x41BDD91: ???
==2756==    by 0x41B0C3D: ???
==2756==    by 0x408AC9C: PMPI_Send (in
/opt/openmpi-1.4.2.p/lib/libmpi.so.0.0.2)
==2756==    by 0x8123377: ConnectorBase::send(CollectionBase*,
std::pair<std::pair<unsigned short, unsigned short>,
std::pair<unsigned short, unsigned short> >&) (ConnectorBase.cpp:39)
==2756==    by 0x8123CEE: TileConnector::sendTile() (TileConnector.cpp:36)
==2756==    by 0x80C6839: TDMaster::init(int, char**) (TDMaster.cpp:226)
==2756==    by 0x80C167B: main (TDMain.cpp:24)
==2756==

At a first glimpse it looks like an OpenMPI-internal leak,
because it happens iinside PMPI_Send,
but then i am using the function ConnectorBase::send()
several times from other callers than TileConnector,
but these don't show up in valgrind's output.

Does anybody have an idea what is happening here?

Thank You
jody

Reply via email to