Hi,
I have been doing a lot of testing/fixing lately on our code, using
valgrind to find problems. Unfortunately, OpenMPI causes a lot of
'false positives' in our testing due to memory leaks of its own.
It appears that MPI_Init allocates a lot of memory blocks that
MPI_Finalize never bothers to clean up. (Perhaps some should be cleaned
up during the MPI_Init process itself?) There are also a couple of
blocks that are created during MPI_Finalize that are not freed.
Appended is a trivial 'hello world' program which demonstrates this
using valgrind. Rerunning with the valgrind --leak-check=full option
shows a plethora of objects which are not deallocated.
In these runs, OpenMPI is at version 1.8.1, but older versions also have
the problem.
Walter
wws@w6ws-4:/tmp$ cat hellompi.f90
program hellompi
use mpi
implicit none
integer :: mpierr
call MPI_INIT (ierror=mpierr)
print *, 'hello world!'
call MPI_FINALIZE (ierror=mpierr)
end program
wws@w6ws-4:/tmp$ mpif90 --version hellompi.f90
GNU Fortran (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Fortran
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING
wws@w6ws-4:/tmp$ mpif90 hellompi.f90
wws@w6ws-4:/tmp$ valgrind a.out
==6897== Memcheck, a memory error detector
==6897== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==6897== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for
copyright info
==6897== Command: a.out
==6897==
hello world!
==6897==
==6897== HEAP SUMMARY:
==6897== in use at exit: 23,899 bytes in 110 blocks
==6897== total heap usage: 15,436 allocs, 15,326 frees, 14,034,006
bytes allocated
==6897==
==6897== LEAK SUMMARY:
==6897== definitely lost: 13,159 bytes in 26 blocks
==6897== indirectly lost: 2,800 bytes in 13 blocks
==6897== possibly lost: 0 bytes in 0 blocks
==6897== still reachable: 7,940 bytes in 71 blocks
==6897== suppressed: 0 bytes in 0 blocks
==6897== Rerun with --leak-check=full to see details of leaked memory
==6897==
==6897== For counts of detected and suppressed errors, rerun with: -v
==6897== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
wws@w6ws-4:/tmp$
wws@w6ws-4:/tmp$
wws@w6ws-4:/tmp$
wws@w6ws-4:/tmp$
wws@w6ws-4:/tmp$ valgrind --leak-check=full a.out
==6932== Memcheck, a memory error detector
==6932== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==6932== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for
copyright info
==6932== Command: a.out
==6932==
hello world!
==6932==
==6932== HEAP SUMMARY:
==6932== in use at exit: 23,899 bytes in 110 blocks
==6932== total heap usage: 15,438 allocs, 15,328 frees, 14,034,092
bytes allocated
==6932==
==6932== 1 bytes in 1 blocks are definitely lost in loss record 2 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x917CAD0: ???
==6932== by 0x5AAD346: opal_db_base_store (db_base_fns.c:49)
==6932== by 0x57B12A2: ompi_modex_send_string
(ompi_module_exchange.c:119)
==6932== by 0x57AD42A: ompi_mpi_init (ompi_mpi_init.c:511)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 6 bytes in 1 blocks are definitely lost in loss record 3 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x66BA951: orte_register_params (orte_mca_params.c:719)
==6932== by 0x66B1042: orte_init (orte_init.c:107)
==6932== by 0x57AD39C: ompi_mpi_init (ompi_mpi_init.c:464)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 8 bytes in 1 blocks are definitely lost in loss record 4 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0xAFB7C33: ???
==6932== by 0x57AE12F: ompi_mpi_finalize (ompi_mpi_finalize.c:143)
==6932== by 0x4E74878: mpi_finalize (pfinalize_f.c:69)
==6932== by 0x400B9F: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 17 (16 direct, 1 indirect) bytes in 1 blocks are definitely
lost in loss record 8 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x917D30D: ???
==6932== by 0x5AAD58A: opal_db_base_fetch (db_base_fns.c:133)
==6932== by 0x57FEDF0: ompi_rte_db_fetch (rte_orte_module.c:281)
==6932== by 0x57B12DF: ompi_modex_recv_string
(ompi_module_exchange.c:138)
==6932== by 0x579CE2A: ompi_comm_cid_init (comm_cid.c:164)
==6932== by 0x57ADF0C: ompi_mpi_init (ompi_mpi_init.c:880)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 24 bytes in 1 blocks are definitely lost in loss record 12 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x917CAD0: ???
==6932== by 0x5AAD346: opal_db_base_store (db_base_fns.c:49)
==6932== by 0x57B1179: ompi_modex_send (ompi_module_exchange.c:49)
==6932== by 0xB5CCE77: ???
==6932== by 0x57EAC42: mca_btl_base_select (btl_base_select.c:108)
==6932== by 0xAFB8790: ???
==6932== by 0x57EA42D: mca_bml_base_init (bml_base_init.c:69)
==6932== by 0xC2902E6: ???
==6932== by 0x57FCFA2: mca_pml_base_select (pml_base_select.c:128)
==6932== by 0x57AD6B9: ompi_mpi_init (ompi_mpi_init.c:604)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932==
==6932== 48 bytes in 1 blocks are definitely lost in loss record 31 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x66E3C83: orte_oob_base_select (opal_object.h:467)
==6932== by 0x66D4E64: orte_ess_base_app_setup (ess_base_std_app.c:128)
==6932== by 0x833C36E: ???
==6932== by 0x66B1107: orte_init (orte_init.c:148)
==6932== by 0x57AD39C: ompi_mpi_init (ompi_mpi_init.c:464)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 64 bytes in 1 blocks are definitely lost in loss record 53 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x5794DFE: ompi_attr_create_keyval_impl (opal_object.h:467)
==6932== by 0x579527B: ompi_attr_create_keyval (attribute.c:582)
==6932== by 0x5796C36: ompi_attr_create_predefined
(attribute_predefined.c:225)
==6932== by 0x57ADA14: ompi_mpi_init (ompi_mpi_init.c:739)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 64 bytes in 1 blocks are definitely lost in loss record 54 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x5794DFE: ompi_attr_create_keyval_impl (opal_object.h:467)
==6932== by 0x579527B: ompi_attr_create_keyval (attribute.c:582)
==6932== by 0x5796C76: ompi_attr_create_predefined
(attribute_predefined.c:225)
==6932== by 0x57ADA14: ompi_mpi_init (ompi_mpi_init.c:739)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 64 bytes in 1 blocks are definitely lost in loss record 55 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x5794DFE: ompi_attr_create_keyval_impl (opal_object.h:467)
==6932== by 0x579527B: ompi_attr_create_keyval (attribute.c:582)
==6932== by 0x5796CB5: ompi_attr_create_predefined
(attribute_predefined.c:225)
==6932== by 0x57ADA14: ompi_mpi_init (ompi_mpi_init.c:739)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 64 bytes in 1 blocks are definitely lost in loss record 56 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x5794DFE: ompi_attr_create_keyval_impl (opal_object.h:467)
==6932== by 0x579527B: ompi_attr_create_keyval (attribute.c:582)
==6932== by 0x5796CF4: ompi_attr_create_predefined
(attribute_predefined.c:225)
==6932== by 0x57ADA14: ompi_mpi_init (ompi_mpi_init.c:739)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 64 bytes in 1 blocks are definitely lost in loss record 57 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x5794DFE: ompi_attr_create_keyval_impl (opal_object.h:467)
==6932== by 0x579527B: ompi_attr_create_keyval (attribute.c:582)
==6932== by 0x5796D33: ompi_attr_create_predefined
(attribute_predefined.c:225)
==6932== by 0x57ADA14: ompi_mpi_init (ompi_mpi_init.c:739)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 64 bytes in 1 blocks are definitely lost in loss record 58 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x5794DFE: ompi_attr_create_keyval_impl (opal_object.h:467)
==6932== by 0x579527B: ompi_attr_create_keyval (attribute.c:582)
==6932== by 0x5796D76: ompi_attr_create_predefined
(attribute_predefined.c:225)
==6932== by 0x57ADA14: ompi_mpi_init (ompi_mpi_init.c:739)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 64 bytes in 1 blocks are definitely lost in loss record 59 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x5794DFE: ompi_attr_create_keyval_impl (opal_object.h:467)
==6932== by 0x579527B: ompi_attr_create_keyval (attribute.c:582)
==6932== by 0x5796DB5: ompi_attr_create_predefined
(attribute_predefined.c:225)
==6932== by 0x57ADA14: ompi_mpi_init (ompi_mpi_init.c:739)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 96 (48 direct, 48 indirect) bytes in 1 blocks are definitely
lost in loss record 61 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x5A8E541: open_component (opal_object.h:467)
==6932== by 0x5A8F8F9: mca_base_component_find
(mca_base_component_find.c:466)
==6932== by 0x5A9A428: mca_base_framework_components_register
(mca_base_components_register.c:57)
==6932== by 0x5A9A8FD: mca_base_framework_register
(mca_base_framework.c:107)
==6932== by 0x5A9A968: mca_base_framework_open (mca_base_framework.c:131)
==6932== by 0x57AD686: ompi_mpi_init (ompi_mpi_init.c:577)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 96 bytes in 2 blocks are definitely lost in loss record 62 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x5A8E541: open_component (opal_object.h:467)
==6932== by 0x5A8F8F9: mca_base_component_find
(mca_base_component_find.c:466)
==6932== by 0x5A9A428: mca_base_framework_components_register
(mca_base_components_register.c:57)
==6932== by 0x5A9A8FD: mca_base_framework_register
(mca_base_framework.c:107)
==6932== by 0x5A9A968: mca_base_framework_open (mca_base_framework.c:131)
==6932== by 0x5A9A9B5: mca_base_framework_open (mca_base_framework.c:150)
==6932== by 0x57AD629: ompi_mpi_init (ompi_mpi_init.c:564)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 160 bytes in 1 blocks are definitely lost in loss record 68 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x999C136: ???
==6932== by 0x57AD75A: ompi_mpi_init (ompi_mpi_init.c:627)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 160 bytes in 1 blocks are definitely lost in loss record 69 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x999BFB6: ???
==6932== by 0x57ADB7E: ompi_mpi_init (ompi_mpi_init.c:816)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 160 bytes in 1 blocks are definitely lost in loss record 70 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x999BFB6: ???
==6932== by 0x57AE1CB: ompi_mpi_finalize (ompi_mpi_finalize.c:222)
==6932== by 0x4E74878: mpi_finalize (pfinalize_f.c:69)
==6932== by 0x400B9F: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 184 (96 direct, 88 indirect) bytes in 1 blocks are definitely
lost in loss record 71 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x5ABF110: opal_hwloc_base_filter_cpus (opal_object.h:467)
==6932== by 0x5AC0D6A: opal_hwloc_base_get_topology
(hwloc_base_util.c:226)
==6932== by 0x57AD7B4: ompi_mpi_init (ompi_mpi_init.c:485)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 199 (80 direct, 119 indirect) bytes in 1 blocks are definitely
lost in loss record 72 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x5A98EFD: mca_base_var_enum_create (opal_object.h:467)
==6932== by 0xCD0B59B: ???
==6932== by 0x5A9A531: mca_base_framework_components_register
(mca_base_components_register.c:116)
==6932== by 0x5A9A8FD: mca_base_framework_register
(mca_base_framework.c:107)
==6932== by 0x5A9A968: mca_base_framework_open (mca_base_framework.c:131)
==6932== by 0x57AD667: ompi_mpi_init (ompi_mpi_init.c:572)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 376 (232 direct, 144 indirect) bytes in 1 blocks are definitely
lost in loss record 76 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0xAFB77F4: ???
==6932== by 0xC28E7D8: ???
==6932== by 0x57ADA88: ompi_mpi_init (ompi_mpi_init.c:771)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 888 bytes in 1 blocks are definitely lost in loss record 84 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0x57928B4: ompi_free_list_grow (ompi_free_list.c:203)
==6932== by 0xC28E415: ???
==6932== by 0x57FD909: mca_pml_v_enable (pml_v_component.c:217)
==6932== by 0x57ADA5C: ompi_mpi_init (ompi_mpi_init.c:760)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 2,400 bytes in 1 blocks are definitely lost in loss record 87 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0xA5A2FE6: ???
==6932== by 0xA5A2EC8: ???
==6932== by 0xC290610: ???
==6932== by 0x5A9070C: mca_base_framework_components_open
(mca_base_components_open.c:173)
==6932== by 0x57FC9F6: mca_pml_base_open (pml_base_frame.c:187)
==6932== by 0x5A9A9B5: mca_base_framework_open (mca_base_framework.c:150)
==6932== by 0x57AD648: ompi_mpi_init (ompi_mpi_init.c:568)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 2,480 (80 direct, 2,400 indirect) bytes in 1 blocks are
definitely lost in loss record 88 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0xA5A2EAC: ???
==6932== by 0xBE632D0: ???
==6932== by 0x5A9070C: mca_base_framework_components_open
(mca_base_components_open.c:173)
==6932== by 0x57FC9F6: mca_pml_base_open (pml_base_frame.c:187)
==6932== by 0x5A9A9B5: mca_base_framework_open (mca_base_framework.c:150)
==6932== by 0x57AD648: ompi_mpi_init (ompi_mpi_init.c:568)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== 8,208 bytes in 1 blocks are definitely lost in loss record 89 of 89
==6932== at 0x4C2AB80: malloc (in
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==6932== by 0xCCEDD99: ???
==6932== by 0x5A6A708: opal_free_list_grow (opal_object.h:424)
==6932== by 0xCCE9649: ???
==6932== by 0x57F90B4: ompi_osc_base_find_available (osc_base_frame.c:48)
==6932== by 0x57AD929: ompi_mpi_init (ompi_mpi_init.c:661)
==6932== by 0x57CE572: PMPI_Init (pinit.c:84)
==6932== by 0x4E777C4: MPI_INIT (pinit_f.c:82)
==6932== by 0x400B33: MAIN__ (in /tmp/a.out)
==6932== by 0x400BD5: main (in /tmp/a.out)
==6932==
==6932== LEAK SUMMARY:
==6932== definitely lost: 13,159 bytes in 26 blocks
==6932== indirectly lost: 2,800 bytes in 13 blocks
==6932== possibly lost: 0 bytes in 0 blocks
==6932== still reachable: 7,940 bytes in 71 blocks
==6932== suppressed: 0 bytes in 0 blocks
==6932== Reachable blocks (those to which a pointer was found) are not
shown.
==6932== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==6932==
==6932== For counts of detected and suppressed errors, rerun with: -v
==6932== ERROR SUMMARY: 25 errors from 25 contexts (suppressed: 0 from 0)
wws@w6ws-4:/tmp$