From 155ee5619bf0f485f9c7132b77c004c31014ef4e Mon Sep 17 00:00:00 2001 From: Howard Pritchard Date: Thu, 17 Oct 2024 13:38:59 -0600 Subject: [PATCH] sessions: fix some problems with multiple init/fini Fix a couple of problems uncovered in issue #12854. Turns out the MCA param management system was "remembering" things even if a variable was deregistered when a framework was closed. Also the test case showed that destructing ompi_mpi_session_null needs to be moved to ompi_mpi_instance_release. Related to #12854 Signed-off-by: Howard Pritchard --- ompi/instance/instance.c | 4 ++-- opal/mca/base/mca_base_var_group.c | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ompi/instance/instance.c b/ompi/instance/instance.c index d0f0d490de3..61a268545c2 100644 --- a/ompi/instance/instance.c +++ b/ompi/instance/instance.c @@ -222,6 +222,8 @@ void ompi_mpi_instance_release (void) opal_argv_free (ompi_mpi_instance_pmix_psets); ompi_mpi_instance_pmix_psets = NULL; + OBJ_DESTRUCT(&ompi_mpi_instance_null); + opal_finalize_cleanup_domain (&ompi_instance_basic_domain); OBJ_DESTRUCT(&ompi_instance_basic_domain); @@ -950,8 +952,6 @@ static int ompi_mpi_instance_finalize_common (void) ompi_proc_finalize(); - OBJ_DESTRUCT(&ompi_mpi_instance_null); - ompi_mpi_instance_release (); if (0 == opal_initialized) { diff --git a/opal/mca/base/mca_base_var_group.c b/opal/mca/base/mca_base_var_group.c index 7bdb656b09c..732df663e98 100644 --- a/opal/mca/base/mca_base_var_group.c +++ b/opal/mca/base/mca_base_var_group.c @@ -15,6 +15,8 @@ * reserved. * Copyright (c) 2017 Research Organization for Information Science * and Technology (RIST). All rights reserved. + * Copyright (c) 2024 Triad National Security, LLC. All rights + * reserved. * $COPYRIGHT$ * * Additional copyrights may follow @@ -374,6 +376,8 @@ int mca_base_var_group_deregister(int group_index) for (int i = 0; i < size; ++i) { OBJ_RELEASE(enums[i]); } + opal_value_array_set_size(&group->group_enums, 0); + size = opal_value_array_get_size(&group->group_subgroups); subgroups = OPAL_VALUE_ARRAY_GET_BASE(&group->group_subgroups, int);