Skip to content

Commit 83e3323

Browse files
authored
Merge pull request #2299 from alex-mikheev/topic/oshmem_init_fix
OSHMEM: fixes crash during initialization
2 parents 3d4285b + 511dd43 commit 83e3323

File tree

1 file changed

+23
-21
lines changed

1 file changed

+23
-21
lines changed

oshmem/runtime/oshmem_shmem_init.c

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -149,35 +149,37 @@ int oshmem_shmem_init(int argc, char **argv, int requested, int *provided)
149149
if (!ompi_mpi_initialized && !ompi_mpi_finalized) {
150150
ret = ompi_mpi_init(argc, argv, requested, provided);
151151
}
152-
PMPI_Comm_dup(MPI_COMM_WORLD, &oshmem_comm_world);
153152

154-
if (OSHMEM_SUCCESS == ret) {
155-
ret = _shmem_init(argc, argv, requested, provided);
153+
if (OSHMEM_SUCCESS != ret) {
154+
return ret;
156155
}
157156

158-
if (OSHMEM_SUCCESS == ret) {
159-
oshmem_shmem_initialized = true;
157+
PMPI_Comm_dup(MPI_COMM_WORLD, &oshmem_comm_world);
158+
ret = _shmem_init(argc, argv, requested, provided);
160159

161-
if (OSHMEM_SUCCESS != shmem_lock_init()) {
162-
SHMEM_API_ERROR( "shmem_lock_init() failed");
163-
return OSHMEM_ERROR;
164-
}
160+
if (OSHMEM_SUCCESS != ret) {
161+
return ret;
162+
}
163+
oshmem_shmem_initialized = true;
165164

166-
/* this is a collective op, implies barrier */
167-
MCA_MEMHEAP_CALL(get_all_mkeys());
165+
if (OSHMEM_SUCCESS != shmem_lock_init()) {
166+
SHMEM_API_ERROR( "shmem_lock_init() failed");
167+
return OSHMEM_ERROR;
168+
}
168169

169-
oshmem_shmem_preconnect_all();
170+
/* this is a collective op, implies barrier */
171+
MCA_MEMHEAP_CALL(get_all_mkeys());
172+
173+
oshmem_shmem_preconnect_all();
170174
#if OSHMEM_OPAL_THREAD_ENABLE
171-
pthread_t thread_id;
172-
int perr;
173-
perr = pthread_create(&thread_id, NULL, &shmem_opal_thread, NULL);
174-
if (perr != 0)
175-
{
176-
SHMEM_API_ERROR("cannot creat opal thread for SHMEM");
177-
return OSHMEM_ERROR;
178-
}
179-
#endif
175+
pthread_t thread_id;
176+
int perr;
177+
perr = pthread_create(&thread_id, NULL, &shmem_opal_thread, NULL);
178+
if (0 != perr) {
179+
SHMEM_API_ERROR("cannot create opal thread for SHMEM");
180+
return OSHMEM_ERROR;
180181
}
182+
#endif
181183
}
182184
#ifdef SIGUSR1
183185
signal(SIGUSR1,sighandler__SIGUSR1);

0 commit comments

Comments
 (0)