diff --git a/src/common/slurm_protocol_pack.c b/src/common/slurm_protocol_pack.c index 4092a9b4c98690bd7db22995f5173293f0a6ce0c..976871a59bb4517fff47a349ee02b4244a377adf 100644 --- a/src/common/slurm_protocol_pack.c +++ b/src/common/slurm_protocol_pack.c @@ -10167,9 +10167,14 @@ static void _pack_launch_tasks_request_msg(launch_tasks_request_msg_t *msg, buffer); } pack32(msg->pack_ntasks, buffer); - if (msg->pack_ntasks != NO_VAL) + if ((msg->pack_ntasks != NO_VAL) && msg->pack_tid_offsets) { + /* pack_tids == NULL if request from pre-v19.05 srun */ + pack8((uint8_t) 1, buffer); for (i = 0; i < msg->pack_ntasks; i++) pack32(msg->pack_tid_offsets[i], buffer); + } else if (msg->pack_ntasks != NO_VAL) + pack8((uint8_t) 0, buffer); + pack32(msg->pack_offset, buffer); pack32(msg->pack_step_cnt, buffer); pack32(msg->pack_task_offset, buffer); @@ -10479,7 +10484,9 @@ static int _unpack_launch_tasks_request_msg(launch_tasks_request_msg_t **msg_ptr goto unpack_error; } safe_unpack32(&msg->pack_ntasks, buffer); - if (msg->pack_ntasks != NO_VAL) { + if (msg->pack_ntasks != NO_VAL) + safe_unpack8(&uint8_tmp, buffer); + if ((msg->pack_ntasks != NO_VAL) && (uint8_tmp == 1)) { safe_xcalloc(msg->pack_tid_offsets, msg->pack_ntasks, sizeof(uint32_t)); for (i = 0; i < msg->pack_ntasks; i++)