{
  Ignore dlopen bug.
  Memcheck:Leak
  ...
  fun:_dlerror_run
  ...
}
{
  Ignore CPPunit misusage, see http://stackoverflow.com/questions/1644766/cppunit-leakage
  Memcheck:Leak
  ...
  fun:_ZN7CppUnit19TestFactoryRegistry8makeTestEv
  ...
}
#
# This is a valgrind suppression file that should be used when using valgrind.
#
#  Here's an example of running valgrind:
#
#	cd python/dist/src
#	valgrind --tool=memcheck --suppressions=Misc/valgrind-python.supp \
#		./python -E -tt ./Lib/test/regrtest.py -u bsddb,network
#
# You must edit Objects/obmalloc.c and uncomment Py_USING_MEMORY_DEBUGGER
# to use the preferred suppressions with Py_ADDRESS_IN_RANGE.
#
# If you do not want to recompile Python, you can uncomment
# suppressions for PyObject_Free and PyObject_Realloc.
#
# See Misc/README.valgrind for more information.

# all tool names: Addrcheck,Memcheck,cachegrind,helgrind,massif
{
   ADDRESS_IN_RANGE/Invalid read of size 4
   Memcheck:Addr4
   fun:Py_ADDRESS_IN_RANGE
}

{
   ADDRESS_IN_RANGE/Invalid read of size 4
   Memcheck:Value4
   fun:Py_ADDRESS_IN_RANGE
}

{
   ADDRESS_IN_RANGE/Invalid read of size 8 (x86_64 aka amd64)
   Memcheck:Value8
   fun:Py_ADDRESS_IN_RANGE
}

{
   ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value
   Memcheck:Cond
   fun:Py_ADDRESS_IN_RANGE
}

#
# Leaks (including possible leaks)
#    Hmmm, I wonder if this masks some real leaks.  I think it does.
#    Will need to fix that.
#

{
   Suppress leaking the GIL.  Happens once per process, see comment in ceval.c.
   Memcheck:Leak
   fun:malloc
   fun:PyThread_allocate_lock
   fun:PyEval_InitThreads
}

{
   Suppress leaking the GIL after a fork.
   Memcheck:Leak
   fun:malloc
   fun:PyThread_allocate_lock
   fun:PyEval_ReInitThreads
}

{
   Suppress leaking the autoTLSkey.  This looks like it shouldn't leak though.
   Memcheck:Leak
   fun:malloc
   fun:PyThread_create_key
   fun:_PyGILState_Init
   fun:Py_InitializeEx
   fun:Py_Main
}

{
   Hmmm, is this a real leak or like the GIL?
   Memcheck:Leak
   fun:malloc
   fun:PyThread_ReInitTLS
}

{
   Handle PyMalloc confusing valgrind (possibly leaked)
   Memcheck:Leak
   fun:realloc
   fun:_PyObject_GC_Resize
}

{
   Handle PyMalloc confusing valgrind (possibly leaked)
   Memcheck:Leak
   match-leak-kinds: possible
   fun:malloc
   fun:_PyObject_GC_Resize
}

{
   Handle PyMalloc confusing valgrind (possibly leaked)
   Memcheck:Leak
   fun:malloc
   fun:_PyObject_GC_New
}

{
   Handle PyMalloc confusing valgrind (possibly leaked)
   Memcheck:Leak
   fun:malloc
   fun:_PyObject_GC_NewVar
}

{
   Siconos added this
   Memcheck:Cond
   fun:_PyObject_GC_Resize
   fun:PyFrame_New
}

{
   Siconos added this
   Memcheck:Addr4
   fun:_PyObject_GC_Resize
   fun:PyFrame_New
}

#
# Non-python specific leaks
#

{
   Handle pthread issue (possibly leaked)
   Memcheck:Leak
   fun:calloc
   fun:allocate_dtv
   fun:_dl_allocate_tls_storage
   fun:_dl_allocate_tls
}

{
   Handle pthread issue (possibly leaked)
   Memcheck:Leak
   fun:memalign
   fun:_dl_allocate_tls_storage
   fun:_dl_allocate_tls
}

{
   ADDRESS_IN_RANGE/Invalid read of size 4
   Memcheck:Addr4
   fun:PyObject_Free
}

{
   ADDRESS_IN_RANGE/Invalid read of size 4
   Memcheck:Value4
   fun:PyObject_Free
}

{
   ADDRESS_IN_RANGE/Invalid read of size 4
   Memcheck:Value8
   fun:PyObject_Free
}

{
   SICONOS CUSTOM
   Memcheck:Value8
   fun:PyObject_Realloc
}

{
   ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value
   Memcheck:Cond
   fun:PyObject_Free
}

{
   ADDRESS_IN_RANGE/Invalid read of size 4
   Memcheck:Addr4
   fun:PyObject_Realloc
}

{
   ADDRESS_IN_RANGE/Invalid read of size 4
   Memcheck:Value4
   fun:PyObject_Realloc
}

{
   ADDRESS_IN_RANGE/Conditional jump or move depends on uninitialised value
   Memcheck:Cond
   fun:PyObject_Realloc
}

{
  SICONOS CUSTOM SUPPR
  Memcheck:Leak
  match-leak-kinds: possible
  fun:malloc
  fun:_PyObject_GC_Malloc
}

{
  SICONOS CUSTOM SUPPR
  Memcheck:Leak
  match-leak-kinds: possible
  fun:malloc
  fun:PyString_FromStringAndSize
}

{
  SICONOS CUSTOM SUPPR
  Memcheck:Addr4
  fun:PyGrammar_AddAccelerators
}

{
  SICONOS CUSTOM SUPPR
  Memcheck:Value8
  fun:PyGrammar_AddAccelerators
}

{
  SICONOS CUSTOM SUPPR
  Memcheck:Cond
  fun:PyGrammar_AddAccelerators
}

{
  SICONOS CUSTOM SUPPR
  Memcheck:Addr4
  fun:PyRun_StringFlags
}

{
  SICONOS CUSTOM SUPPR
  Memcheck:Value8
  fun:PyRun_StringFlags
}

{
  SICONOS CUSTOM SUPPR
  Memcheck:Cond
  fun:PyRun_StringFlags
}

{
  SICONOS CUSTOM SUPPR
  Memcheck:Value8
  fun:_PyString_Resize
}

###
### All the suppressions below are for errors that occur within libraries
### that Python uses.  The problems to not appear to be related to Python's
### use of the libraries.
###

{
   Generic ubuntu ld problems
   Memcheck:Addr8
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
   obj:/lib/ld-2.4.so
}

{
   Generic gentoo ld problems
   Memcheck:Cond
   obj:/lib/ld-2.3.4.so
   obj:/lib/ld-2.3.4.so
   obj:/lib/ld-2.3.4.so
   obj:/lib/ld-2.3.4.so
}

{
   DBM problems, see test_dbm
   Memcheck:Param
   write(buf)
   fun:write
   obj:/usr/lib/libdb1.so.2
   obj:/usr/lib/libdb1.so.2
   obj:/usr/lib/libdb1.so.2
   obj:/usr/lib/libdb1.so.2
   fun:dbm_close
}

{
   DBM problems, see test_dbm
   Memcheck:Value8
   fun:memmove
   obj:/usr/lib/libdb1.so.2
   obj:/usr/lib/libdb1.so.2
   obj:/usr/lib/libdb1.so.2
   obj:/usr/lib/libdb1.so.2
   fun:dbm_store
   fun:dbm_ass_sub
}

{
   DBM problems, see test_dbm
   Memcheck:Cond
   obj:/usr/lib/libdb1.so.2
   obj:/usr/lib/libdb1.so.2
   obj:/usr/lib/libdb1.so.2
   fun:dbm_store
   fun:dbm_ass_sub
}

{
   DBM problems, see test_dbm
   Memcheck:Cond
   fun:memmove
   obj:/usr/lib/libdb1.so.2
   obj:/usr/lib/libdb1.so.2
   obj:/usr/lib/libdb1.so.2
   obj:/usr/lib/libdb1.so.2
   fun:dbm_store
   fun:dbm_ass_sub
}

{
   GDBM problems, see test_gdbm
   Memcheck:Param
   write(buf)
   fun:write
   fun:gdbm_open

}

{
   ZLIB problems, see test_gzip
   Memcheck:Cond
   obj:/lib/libz.so.1.2.3
   obj:/lib/libz.so.1.2.3
   fun:deflate
}

{
   Avoid problems w/readline doing a putenv and leaking on exit
   Memcheck:Leak
   fun:malloc
   fun:xmalloc
   fun:sh_set_lines_and_columns
   fun:_rl_get_screen_size
   fun:_rl_init_terminal_io
   obj:/lib/libreadline.so.4.3
   fun:rl_initialize
}

###
### These occur from somewhere within the SSL, when running
###  test_socket_sll.  They are too general to leave on by default.
###
###{
###   somewhere in SSL stuff
###   Memcheck:Cond
###   fun:memset
###}
###{
###   somewhere in SSL stuff
###   Memcheck:Value4
###   fun:memset
###}
###
###{
###   somewhere in SSL stuff
###   Memcheck:Cond
###   fun:MD5_Update
###}
###
###{
###   somewhere in SSL stuff
###   Memcheck:Value4
###   fun:MD5_Update
###}

#
# All of these problems come from using test_socket_ssl
#
{
   from test_socket_ssl
   Memcheck:Cond
   fun:BN_bin2bn
}

{
   from test_socket_ssl
   Memcheck:Cond
   fun:BN_num_bits_word
}

{
   from test_socket_ssl
   Memcheck:Value4
   fun:BN_num_bits_word
}

{
   from test_socket_ssl
   Memcheck:Cond
   fun:BN_mod_exp_mont_word
}

{
   from test_socket_ssl
   Memcheck:Cond
   fun:BN_mod_exp_mont
}

{
   from test_socket_ssl
   Memcheck:Param
   write(buf)
   fun:write
   obj:/usr/lib/libcrypto.so.0.9.7
}

{
   from test_socket_ssl
   Memcheck:Cond
   fun:RSA_verify
}

{
   from test_socket_ssl
   Memcheck:Value4
   fun:RSA_verify
}

{
   from test_socket_ssl
   Memcheck:Value4
   fun:DES_set_key_unchecked
}

{
   from test_socket_ssl
   Memcheck:Value4
   fun:DES_encrypt2
}

{
   from test_socket_ssl
   Memcheck:Cond
   obj:/usr/lib/libssl.so.0.9.7
}

{
   from test_socket_ssl
   Memcheck:Value4
   obj:/usr/lib/libssl.so.0.9.7
}

{
   from test_socket_ssl
   Memcheck:Cond
   fun:BUF_MEM_grow_clean
}

{
   from test_socket_ssl
   Memcheck:Cond
   fun:memcpy
   fun:ssl3_read_bytes
}

{
   from test_socket_ssl
   Memcheck:Cond
   fun:SHA1_Update
}

{
   from test_socket_ssl
   Memcheck:Value4
   fun:SHA1_Update
}

######################################################################################
# Now for openmpi
# from openmpi package

# -*- text -*-
#
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
#                         University Research and Technology
#                         Corporation.  All rights reserved.
# Copyright (c) 2004-2005 The University of Tennessee and The University
#                         of Tennessee Research Foundation.  All rights
#                         reserved.
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, 
#                         University of Stuttgart.  All rights reserved.
# Copyright (c) 2004-2005 The Regents of the University of California.
#                         All rights reserved.
# $COPYRIGHT$
# 
# Additional copyrights may follow
# 
# $HEADER$
#

###############################################################
#
# OPAL suppressions
#
###############################################################

# weirdness in init routines on Gentoo
{
  linux_pthread_init
  Memcheck:Leak
  fun:calloc
  fun:allocate_dtv
  fun:_dl_allocate_tls_storage
  fun:_dl_allocate_tls
}
{
  linux_pthread_init2
  Memcheck:Leak
  fun:calloc
  fun:_dl_tls_setup
  fun:__pthread_initialize_minimal
}
{
  linux_pthread_init3
  Memcheck:Leak
  fun:memalign
  fun:_dl_allocate_tls_storage
  fun:_dl_allocate_tls
  fun:__pthread_initialize_minimal
}

# The event library leaves some blocks in use that we should clean up,
# but it would require much changing of the event library, so it
# really isn't worth it...
{
  event_lib_poll
  Memcheck:Leak
  fun:malloc
  fun:realloc
  fun:opal_realloc
  fun:poll_dispatch
}

{
   opal_db_base_store
   Memcheck:Leak
   fun:malloc
   obj:*
   fun:opal_db_base_store
   fun:ompi_rte_db_store
   fun:ompi_modex_send_string
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   hwloc_bitmap_asprintf
   Memcheck:Leak
   fun:malloc
   fun:opal_hwloc191_hwloc_bitmap_list_asprintf
   fun:orte_ess_base_proc_binding
   obj:*
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   db_base_strdup
   Memcheck:Leak
   fun:malloc
   fun:strdup
   obj:*
   fun:opal_db_base_store
   fun:orte_util_decode_pidmap
   fun:orte_util_nidmap_init
   obj:*
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   db_base_strdup2
   Memcheck:Leak
   fun:malloc
   fun:strdup
   obj:*
   fun:opal_db_base_store
   fun:orte_ess_base_proc_binding
   obj:*
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   db_base_strdup3
   Memcheck:Leak
   fun:malloc
   fun:strdup
   obj:*
   fun:opal_db_base_store
   fun:orte_util_decode_nodemap
   fun:orte_util_nidmap_init
   obj:*
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   db_base_strdup4
   Memcheck:Leak
   fun:malloc
   fun:strdup
   obj:*
   fun:opal_db_base_store
   fun:orte_util_decode_nodemap
   fun:orte_util_nidmap_init
   obj:*
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   db_base_modex
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   obj:*
   fun:opal_db_base_store
   fun:ompi_rte_db_store
   fun:ompi_modex_send
   obj:*
   obj:*
   fun:mca_btl_base_select
   obj:*
   fun:mca_bml_base_init
   obj:*
   fun:mca_pml_base_select
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   db_base_modex2
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   fun:opal_dss_unpack_value
   fun:opal_dss_unpack_buffer
   fun:opal_dss_unpack
   fun:orte_grpcomm_base_store_modex
   fun:app_recv
   fun:orte_rml_base_process_msg
   fun:event_process_active_single_queue
   fun:event_process_active
   fun:opal_libevent2021_event_base_loop
   fun:orte_progress_thread_engine
   fun:start_thread
   fun:clone
}
{
   db_base_modex3
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   obj:*
   fun:opal_db_base_store
   fun:ompi_rte_db_store
   fun:ompi_modex_send_string
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   db_base_modex4
   Memcheck:Leak
   fun:malloc
   fun:strdup
   fun:opal_dss_lookup_data_type
   obj:*
   fun:opal_db_base_store_pointer
   fun:orte_grpcomm_base_store_modex
   fun:app_recv
   fun:orte_rml_base_process_msg
   fun:event_process_active_single_queue
   fun:event_process_active
   fun:opal_libevent2021_event_base_loop
   fun:orte_progress_thread_engine
   fun:start_thread
   fun:clone
}
{
   db_base_modex5
   Memcheck:Leak
   fun:malloc
   fun:strdup
   fun:opal_dss_lookup_data_type
   obj:*
   fun:opal_db_base_fetch
   fun:ompi_rte_db_fetch
   fun:ompi_modex_recv
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   db_base_fetch
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   fun:opal_dss_copy_value
   fun:opal_dss_copy
   obj:*
   fun:opal_db_base_fetch_multiple
   fun:orte_grpcomm_base_pack_modex_entries
   fun:orte_grpcomm_base_modex
   fun:event_process_active_single_queue
   fun:event_process_active
   fun:opal_libevent2021_event_base_loop
   fun:orte_progress_thread_engine
   fun:start_thread
   fun:clone
}
{
   db_select
   Memcheck:Leak
   fun:calloc
   fun:opal_calloc
   fun:opal_obj_new
   fun:opal_obj_new_debug
   fun:opal_db_base_select
   fun:orte_ess_base_app_setup
   obj:*
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_strdup
   Memcheck:Leak
   fun:malloc
   fun:strdup
   fun:opal_libevent2021_event_mm_strdup_
   fun:opal_libevent2021_event_config_avoid_method
   fun:opal_event_init
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_calloc
   Memcheck:Leak
   fun:calloc
   fun:opal_libevent2021_event_mm_calloc_
   fun:opal_libevent2021_evmap_io_add
   fun:event_add_internal
   fun:opal_libevent2021_event_add
   fun:opal_libevent2021_evthread_make_base_notifiable
   fun:opal_libevent2021_event_base_new_with_config
   fun:opal_event_base_create
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_calloc2
   Memcheck:Leak
   fun:calloc
   fun:opal_libevent2021_event_mm_calloc_
   fun:opal_libevent2021_event_base_priority_init
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_ioadd
   Memcheck:Leak
   fun:calloc
   fun:opal_libevent2021_event_mm_calloc_
   fun:opal_libevent2021_evmap_io_add
   fun:event_add_internal
   fun:opal_libevent2021_event_add
   obj:*
   obj:*
   fun:mca_btl_base_select
   obj:*
   fun:mca_bml_base_init
   obj:*
   fun:mca_pml_base_select
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_ioadd2
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:opal_libevent2021_event_mm_realloc_
   fun:poll_add
   fun:opal_libevent2021_evmap_io_add
   fun:event_add_internal
   fun:opal_libevent2021_event_add
   fun:opal_libevent2021_evthread_make_base_notifiable
   fun:opal_libevent2021_event_base_new_with_config
   fun:opal_event_base_create
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_calloc2
   Memcheck:Leak
   fun:calloc
   fun:opal_libevent2021_event_mm_calloc_
   fun:opal_libevent2021_event_config_new
   fun:opal_event_init
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_calloc3
   Memcheck:Leak
   fun:calloc
   fun:opal_libevent2021_event_mm_calloc_
   fun:poll_init
   fun:opal_libevent2021_event_base_new_with_config
   fun:opal_event_base_create
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_base
   Memcheck:Leak
   fun:malloc
   fun:opal_libevent2021_event_mm_malloc_
   fun:evthread_posix_lock_alloc
   fun:evthread_setup_global_lock_
   fun:event_global_setup_locks_
   fun:opal_libevent2021_evthread_set_lock_callbacks
   fun:opal_libevent2021_evthread_use_pthreads
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_base2
   Memcheck:Leak
   fun:malloc
   fun:opal_libevent2021_event_mm_malloc_
   fun:evthread_posix_lock_alloc
   fun:evthread_setup_global_lock_
   fun:evsig_global_setup_locks_
   fun:event_global_setup_locks_
   fun:opal_libevent2021_evthread_set_lock_callbacks
   fun:opal_libevent2021_evthread_use_pthreads
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_base3
   Memcheck:Leak
   fun:malloc
   fun:opal_libevent2021_event_mm_malloc_
   fun:evthread_posix_lock_alloc
   fun:evthread_setup_global_lock_
   fun:opal_libevent2021_evutil_secure_rng_global_setup_locks_
   fun:event_global_setup_locks_
   fun:opal_libevent2021_evthread_set_lock_callbacks
   fun:opal_libevent2021_evthread_use_pthreads
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_base4
   Memcheck:Leak
   fun:malloc
   fun:opal_libevent2021_event_mm_malloc_
   fun:evthread_posix_lock_alloc
   fun:opal_libevent2021_event_base_new_with_config
   fun:opal_event_base_create
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_base5
   Memcheck:Leak
   fun:malloc
   fun:opal_libevent2021_event_mm_malloc_
   fun:evthread_posix_cond_alloc
   fun:opal_libevent2021_event_base_new_with_config
   fun:opal_event_base_create
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_base6
   Memcheck:Leak
   fun:malloc
   fun:opal_libevent2021_event_mm_malloc_
   fun:opal_libevent2021_event_config_avoid_method
   fun:opal_event_init
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_base7
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:opal_libevent2021_event_mm_realloc_
   fun:evmap_make_space
   fun:opal_libevent2021_evmap_io_add
   fun:event_add_internal
   fun:opal_libevent2021_event_add
   fun:opal_libevent2021_evthread_make_base_notifiable
   fun:opal_libevent2021_event_base_new_with_config
   fun:opal_event_base_create
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_base8
   Memcheck:Leak
   fun:calloc
   fun:opal_libevent2021_event_mm_calloc_
   fun:opal_libevent2021_event_base_new_with_config
   fun:opal_event_base_create
   fun:opal_event_base_open
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   event_dispatch
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:opal_libevent2021_event_mm_realloc_
   fun:poll_dispatch
   fun:opal_libevent2021_event_base_loop
   fun:opal_progress
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   var_register_bml
   Memcheck:Leak
   fun:malloc
   fun:strdup
   fun:mca_base_var_enum_create
   obj:*
   fun:register_components
   fun:mca_base_framework_components_register
   fun:mca_base_framework_register
   fun:mca_base_framework_open
   fun:mca_bml_base_open
   fun:mca_base_framework_open
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   component_find
   Memcheck:Leak
   fun:calloc
   fun:_dlerror_run
   fun:dlopen@@GLIBC_2.2.5
   fun:vm_open
   fun:tryall_dlopen
   fun:tryall_dlopen_module
   fun:find_module
   fun:try_dlopen
   fun:lt_dlopenadvise
   fun:open_component
   fun:find_dyn_components
   fun:mca_base_component_find
   fun:mca_base_framework_components_register
   fun:mca_base_framework_register
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   component_reg
   Memcheck:Leak
   fun:calloc
   fun:opal_calloc
   fun:opal_obj_new
   fun:opal_obj_new_debug
   fun:mca_base_component_find
   fun:mca_base_framework_components_register
   fun:mca_base_framework_register
   fun:mca_base_framework_open
   fun:opal_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   component_reg2
   Memcheck:Leak
   fun:calloc
   fun:opal_calloc
   fun:opal_obj_new
   fun:opal_obj_new_debug
   fun:mca_base_var_enum_create
   obj:*
   fun:register_components
   fun:mca_base_framework_components_register
   fun:mca_base_framework_register
   fun:mca_base_framework_open
   fun:mca_bml_base_open
   fun:mca_base_framework_open
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   enum_create
   Memcheck:Leak
   fun:calloc
   fun:opal_calloc
   fun:mca_base_var_enum_create
   obj:*
   fun:register_components
   fun:mca_base_framework_components_register
   fun:mca_base_framework_register
   fun:mca_base_framework_open
   fun:mca_bml_base_open
   fun:mca_base_framework_open
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   enum_create2
   Memcheck:Leak
   fun:malloc
   fun:strdup
   fun:mca_base_var_enum_create
   obj:*
   fun:register_components
   fun:mca_base_framework_components_register
   fun:mca_base_framework_register
   fun:mca_base_framework_open
   fun:mca_bml_base_open
   fun:mca_base_framework_open
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   dss_lookup
   Memcheck:Leak
   fun:malloc
   fun:strdup
   fun:opal_dss_lookup_data_type
   obj:*
   fun:opal_db_base_fetch
   obj:*
   obj:*
   obj:*
   obj:*
   fun:event_persist_closure
   fun:event_process_active_single_queue
   fun:event_process_active
   fun:opal_libevent2021_event_base_loop
   fun:orte_progress_thread_engine
   fun:start_thread
   fun:clone
}
{
   hwloc_search
   Memcheck:Leak
   fun:malloc
   fun:opal_hwloc191_hwloc_bitmap_alloc
   fun:opal_hwloc_base_get_available_cpus
   fun:df_search
   fun:df_search
   fun:opal_hwloc_base_get_nbobjs_by_type
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   hwloc_cpus
   Memcheck:Leak
   fun:calloc
   fun:opal_calloc
   fun:opal_obj_new
   fun:opal_obj_new_debug
   fun:opal_hwloc_base_get_available_cpus
   fun:opal_hwloc_base_get_relative_locality
   fun:ompi_proc_set_locality
   fun:ompi_proc_complete_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   hwloc_cpus2
   Memcheck:Leak
   fun:malloc
   fun:opal_hwloc191_hwloc_bitmap_alloc
   fun:opal_hwloc_base_get_available_cpus
   fun:opal_hwloc_base_get_relative_locality
   fun:ompi_proc_set_locality
   fun:ompi_proc_complete_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   hwloc_cpus3
   Memcheck:Leak
   fun:malloc
   fun:opal_hwloc191_hwloc_bitmap_alloc
   fun:opal_hwloc_base_get_available_cpus
   fun:opal_hwloc_base_get_relative_locality
   fun:ompi_proc_set_locality
   fun:ompi_proc_complete_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   hwloc_cpus4
   Memcheck:Leak
   fun:calloc
   fun:opal_calloc
   fun:opal_obj_new
   fun:opal_obj_new_debug
   fun:df_search
   fun:df_search
   fun:opal_hwloc_base_get_nbobjs_by_type
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}


###############################################################
#
# ORTE suppressions
#
###############################################################

# inet_ntoa on linux mallocs a static buffer.  We can't free 
# it, so we have to live with it
{
  linux_inet_ntoa
  Memcheck:Leak
  fun:malloc
  fun:inet_ntoa
}
{
  linux_inet_ntoa_thread
  Memcheck:Leak
  fun:calloc
  fun:pthread_setspecific
  fun:inet_ntoa
}
{
   oob_tcp_listen_thread_bind
   Memcheck:Param
   socketcall.bind(my_addr.sin6_flowinfo)
   fun:bind
   fun:create_listen6
   fun:orte_oob_tcp_start_listening
   fun:component_startup
   fun:orte_oob_base_select
   fun:orte_ess_base_app_setup
   fun:rte_init
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   print_name
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   fun:get_print_name_buffer
   fun:orte_util_print_jobids
   fun:orte_util_print_name_args
   obj:*
   obj:*
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   print_name2
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   fun:get_print_name_buffer
   fun:orte_util_print_jobids
   fun:orte_util_print_name_args
   obj:*
   obj:*
   fun:orte_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}


###############################################################
#
# OMPI suppressions
#
###############################################################
{
  tcp_send
  Memcheck:Param
  writev(vector[...])
  fun:writev
  fun:mca_btl_tcp_frag_send
  fun:mca_btl_tcp_endpoint_send
}
{
   bml_reserve
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:opal_realloc
   fun:mca_bml_base_btl_array_reserve
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   bml_reserve2
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:opal_realloc
   fun:mca_bml_base_btl_array_reserve
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   bml_reserve3
   Memcheck:Leak
   fun:malloc
   fun:realloc
   fun:opal_realloc
   fun:mca_bml_base_btl_array_reserve
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_calloc
   Memcheck:Leak
   fun:calloc
   fun:opal_calloc
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_calloc2
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_calloc3
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_calloc4
   Memcheck:Leak
   fun:calloc
   fun:opal_calloc
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_fetch
   Memcheck:Leak
   fun:malloc
   fun:strdup
   obj:*
   fun:opal_db_base_fetch
   fun:ompi_proc_set_locality
   fun:ompi_proc_complete_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_fetch2
   Memcheck:Leak
   fun:malloc
   fun:strdup
   fun:opal_dss_lookup_data_type
   obj:*
   fun:opal_db_base_fetch
   fun:ompi_proc_set_locality
   fun:ompi_proc_complete_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_fetch3
   Memcheck:Leak
   fun:malloc
   fun:strdup
   fun:opal_dss_lookup_data_type
   obj:*
   fun:opal_db_base_fetch
   fun:ompi_proc_set_locality
   fun:ompi_proc_complete_init
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_fetch4
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   obj:*
   fun:opal_db_base_fetch
   fun:ompi_rte_db_fetch
   fun:ompi_modex_recv
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_fetch5
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   obj:*
   fun:opal_db_base_fetch
   fun:ompi_rte_db_fetch
   fun:ompi_modex_recv
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_fetch6
   Memcheck:Leak
   fun:malloc
   fun:strdup
   fun:opal_dss_lookup_data_type
   obj:*
   fun:opal_db_base_fetch
   fun:ompi_rte_db_fetch
   fun:ompi_modex_recv
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   vader
   Memcheck:Addr2
   fun:memcpy@@GLIBC_2.14
   fun:opal_convertor_pack
   fun:mca_btl_vader_sendi
   fun:mca_bml_base_sendi
   fun:mca_pml_ob1_send_inline
   fun:mca_pml_ob1_send
   fun:PMPI_Send
   fun:main
}
{
   btl_select
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   obj:*
   fun:mca_btl_base_select
   obj:*
   fun:mca_bml_base_init
   obj:*
   fun:mca_pml_base_select
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   mpool_create
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   obj:*
   obj:*
   fun:mca_mpool_base_module_create
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   mpool_create2
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   obj:*
   obj:*
   obj:*
   fun:mca_mpool_base_module_create
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   mpool_create3
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   obj:*
   fun:mca_mpool_base_module_create
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_free_list
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   fun:ompi_free_list_grow
   fun:ompi_free_list_init_ex_new
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_free_list2
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   fun:ompi_free_list_grow
   fun:ompi_free_list_init_ex_new
   obj:*
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}
{
   ompi_free_list3
   Memcheck:Leak
   fun:malloc
   fun:opal_malloc
   fun:opal_free_list_grow
   fun:opal_free_list_init
   obj:*
   obj:*
   obj:*
   obj:*
   fun:ompi_mpi_init
   fun:PMPI_Init
   fun:main
}

###############################################################
#
# Suppressions for various commonly-used packages
#
###############################################################

# Portals reference implementation has a read from invalid issue
{
  portals_send
  Memcheck:Param
  socketcall.send(msg)
  fun:send
  fun:utcp_sendbytes
  fun:utcp_sendto
  fun:utcp_msg_wait
}
