@@ -529,6 +529,7 @@ static int allocate_state_single (ompi_osc_rdma_module_t *module, void **base, s
529
529
my_peer -> state_handle = module -> state_handle ;
530
530
my_peer -> state_btl_index = my_peer -> data_btl_index ;
531
531
my_peer -> state_endpoint = my_peer -> data_endpoint ;
532
+ assert (my_peer -> state_endpoint != NULL );
532
533
}
533
534
534
535
if (MPI_WIN_FLAVOR_DYNAMIC != module -> flavor ) {
@@ -581,7 +582,7 @@ static int allocate_state_shared (ompi_osc_rdma_module_t *module, void **base, s
581
582
int my_rank = ompi_comm_rank (module -> comm );
582
583
int global_size = ompi_comm_size (module -> comm );
583
584
ompi_osc_rdma_region_t * state_region ;
584
- struct _local_data * temp ;
585
+ struct _local_data * temp = NULL ;
585
586
char * data_file ;
586
587
int page_size = opal_getpagesize ();
587
588
@@ -625,6 +626,7 @@ static int allocate_state_shared (ompi_osc_rdma_module_t *module, void **base, s
625
626
}
626
627
627
628
do {
629
+ free (temp ); // free from prior iteration. Should be initialized to NULL.
628
630
temp = calloc (local_size , sizeof (temp [0 ]));
629
631
if (NULL == temp ) {
630
632
ret = OMPI_ERR_OUT_OF_RESOURCE ;
@@ -788,10 +790,9 @@ static int allocate_state_shared (ompi_osc_rdma_module_t *module, void **base, s
788
790
peer -> state_handle = (mca_btl_base_registration_handle_t * ) state_region -> btl_handle_data ;
789
791
}
790
792
peer -> state = (osc_rdma_counter_t ) ((uintptr_t ) state_region -> base + state_base + module -> state_size * i );
791
- if (i > 0 ) {
792
- peer -> state_endpoint = local_leader -> state_endpoint ;
793
- peer -> state_btl_index = local_leader -> state_btl_index ;
794
- }
793
+ peer -> state_endpoint = local_leader -> data_endpoint ; // data_endpoint initialized in ompi_osc_rdma_new_peer();
794
+ peer -> state_btl_index = local_leader -> data_btl_index ;
795
+ assert (peer -> state_endpoint != NULL );
795
796
}
796
797
797
798
if (my_rank == peer_rank ) {
@@ -914,10 +915,8 @@ static void ompi_osc_rdma_ensure_local_add_procs (void)
914
915
static int ompi_osc_rdma_query_alternate_btls (ompi_communicator_t * comm , ompi_osc_rdma_module_t * module )
915
916
{
916
917
mca_btl_base_selected_module_t * item ;
917
- char * * btls_to_use = opal_argv_split (ompi_osc_rdma_btl_alternate_names , ',' );
918
918
int btls_found = 0 ;
919
-
920
- btls_to_use = opal_argv_split (ompi_osc_rdma_btl_alternate_names , ',' );
919
+ char * * btls_to_use = opal_argv_split (ompi_osc_rdma_btl_alternate_names , ',' );
921
920
if (NULL == btls_to_use ) {
922
921
OSC_RDMA_VERBOSE (MCA_BASE_VERBOSE_INFO , "no alternate BTLs requested: %s" , ompi_osc_rdma_btl_alternate_names );
923
922
return OMPI_ERR_UNREACH ;
0 commit comments