Skip to content

Commit 8e90958

Browse files
committed
Avoid calling twice into opal_mutex_lock() in ompi_mpi_instance_init()
Signed-off-by: Jan Ciesko <[email protected]>
1 parent 8fbfe4c commit 8e90958

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

ompi/instance/instance.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -342,11 +342,6 @@ static int ompi_mpi_instance_init_common (int argc, char **argv)
342342
opal_pmix_lock_t mylock;
343343
OMPI_TIMING_INIT(64);
344344

345-
ret = ompi_mpi_instance_retain ();
346-
if (OPAL_UNLIKELY(OMPI_SUCCESS != ret)) {
347-
return ret;
348-
}
349-
350345
OBJ_CONSTRUCT(&ompi_instance_common_domain, opal_finalize_domain_t);
351346
opal_finalize_domain_init (&ompi_instance_common_domain, "ompi_mpi_instance_init_common");
352347
opal_finalize_set_domain (&ompi_instance_common_domain);
@@ -796,12 +791,17 @@ int ompi_mpi_instance_init (int ts_level, opal_info_t *info, ompi_errhandler_t
796791
if (ts_level == MPI_THREAD_MULTIPLE) {
797792
opal_set_using_threads(true);
798793
}
799-
794+
795+
ret = ompi_mpi_instance_retain ();
796+
if (OPAL_UNLIKELY(OMPI_SUCCESS != ret)) {
797+
return ret;
798+
}
799+
800800
opal_mutex_lock (&instance_lock);
801+
801802
if (0 == opal_atomic_fetch_add_32 (&ompi_instance_count, 1)) {
802803
ret = ompi_mpi_instance_init_common (argc, argv);
803804
if (OPAL_UNLIKELY(OPAL_SUCCESS != ret)) {
804-
opal_mutex_unlock (&instance_lock);
805805
return ret;
806806
}
807807
}
@@ -1046,7 +1046,7 @@ static void ompi_instance_refresh_pmix_psets (const char *key)
10461046
if (PMIX_SUCCESS != (rc = PMIx_Query_info_nb(&query, 1,
10471047
ompi_instance_get_num_psets_complete,
10481048
(void*)&lock))) {
1049-
opal_mutex_unlock (&instance_lock);
1049+
opal_mutex_unlock (&instance_lock);
10501050
}
10511051

10521052
OPAL_PMIX_WAIT_THREAD(&lock);

0 commit comments

Comments
 (0)