@@ -1291,7 +1291,7 @@ void prte_plm_base_daemon_callback(int status, pmix_proc_t *sender, pmix_data_bu
1291
1291
char * ptr ;
1292
1292
int idx ;
1293
1293
pmix_status_t ret ;
1294
- prte_proc_t * daemon = NULL , * dptr ;
1294
+ prte_proc_t * daemon = NULL , * dptr , * d1 ;
1295
1295
prte_job_t * jdata ;
1296
1296
pmix_proc_t dname ;
1297
1297
pmix_data_buffer_t * relay ;
@@ -1635,13 +1635,19 @@ void prte_plm_base_daemon_callback(int status, pmix_proc_t *sender, pmix_data_bu
1635
1635
if (1 == dname .rank ) {
1636
1636
/* process any cached daemons */
1637
1637
PMIX_CONSTRUCT (& cachelist , pmix_list_t );
1638
+ d1 = (prte_proc_t * ) pmix_pointer_array_get_item (jdatorted -> procs , 1 );
1639
+ if (NULL == d1 ) {
1640
+ PRTE_ERROR_LOG (PRTE_ERR_NOT_FOUND );
1641
+ prted_failed_launch = true;
1642
+ goto CLEANUP ;
1643
+ }
1638
1644
while (NULL != (dptr = (prte_proc_t * )pmix_list_remove_first (& prte_plm_globals .daemon_cache ))) {
1639
1645
PMIX_OUTPUT_VERBOSE ((5 , prte_plm_base_framework .framework_output ,
1640
1646
"%s plm:base:prted_daemon_cback processing cached daemon %s" ,
1641
1647
PRTE_NAME_PRINT (PRTE_PROC_MY_NAME ),
1642
1648
PRTE_NAME_PRINT (& dptr -> name )));
1643
1649
if (0 == strcmp (dptr -> node -> topology -> sig , sig )) {
1644
- dptr -> node -> topology = t ;
1650
+ dptr -> node -> topology = d1 -> node -> topology ;
1645
1651
dptr -> node -> available = prte_hwloc_base_filter_cpus (topo );
1646
1652
prte_hwloc_base_setup_summary (topo );
1647
1653
jdatorted -> num_reported ++ ;
0 commit comments