diff --git a/NEWS b/NEWS index 8a7a566e6a9faad621e59c9d803948d2edd3c45c..bc33d56693f0c47adcfd292822586c8800be596f 100644 --- a/NEWS +++ b/NEWS @@ -339,6 +339,8 @@ documents those changes that are of interest to users and administrators. -- MYSQL - Fix issue with adding a reservation if the name has single quotes in it. -- Correctly print ranges when using step values in job arrays. + -- Fix for invalid array pointer when creating advanced reservation when job + allocations span heterogeneous nodes (differing core or socket counts). * Changes in Slurm 15.08.12 =========================== diff --git a/src/slurmctld/reservation.c b/src/slurmctld/reservation.c index 0597b278b6bdea12893e31da34031c535bf16735..3d72882a7b7d5dd542bded9400bfd57b6439b02f 100644 --- a/src/slurmctld/reservation.c +++ b/src/slurmctld/reservation.c @@ -4043,7 +4043,7 @@ static void _check_job_compatibility(struct job_record *job_ptr, { uint32_t total_nodes; bitstr_t *full_node_bitmap; - int i_core, i_node; + int i_core, i_node, res_inx; int start = 0; int rep_count = 0; job_resources_t *job_res = job_ptr->job_resrcs; @@ -4069,9 +4069,8 @@ static void _check_job_compatibility(struct job_record *job_ptr, i_node = 0; while (i_node < total_nodes) { - int cores_in_a_node = (job_res->sockets_per_node[i_node] * - job_res->cores_per_socket[i_node]); - + int cores_in_a_node = (job_res->sockets_per_node[res_inx] * + job_res->cores_per_socket[res_inx]); int repeat_node_conf = job_res->sock_core_rep_count[rep_count++]; int node_bitmap_inx; @@ -4082,6 +4081,7 @@ static void _check_job_compatibility(struct job_record *job_ptr, #endif i_node += repeat_node_conf; + res_inx++; while (repeat_node_conf--) { int allocated;