# LeakSanitizer suppressions for MPI runtime
# These are one-time allocations that persist for the program lifetime
# and are cleaned up by the OS at exit. Not true leaks.

# OpenMPI core
leak:PMPI_Init
leak:ompi_mpi_init
leak:ompi_mpi_finalize
leak:opal_init
leak:opal_finalize
leak:ompi_proc_complete_init
leak:ompi_mpi_instance_init

# PMIx runtime
leak:libpmix.so
leak:PMIx_Init
leak:pmix_bfrops_base_value_load
leak:make_copy

# Hardware locality (hwloc)
leak:libhwloc.so
leak:hwloc__add_info
leak:hwloc_topology_init
leak:hwloc_topology_load

# OpenMPI components
leak:libopen-pal.so
leak:libopen-rte.so
leak:mca_base_framework_open
leak:mca_btl_tcp_proc_create
leak:mca_coll_ftagree_iera_intra

# MPI transport layers
leak:mca_pml_
leak:mca_btl_
leak:mca_coll_

# ULFM (User Level Failure Mitigation)
leak:ompi_errhandler_
leak:ompi_comm_failure_

# Suppress common patterns in MPI stacks
leak:^MPIR_
leak:^MPI_

# OpenMPI internal functions
leak:ompi_comm_set_nb
leak:ompi_comm_init_mpi3
leak:ompi_group_allocate
leak:ompi_group_allocate_plist_w_procs
leak:era_update_return_value

# Suppress indirect leaks from MPI
leak:libmpi.so
leak:libopen_mpi.so
