diff --git a/src/common/slurm_protocol_defs.c b/src/common/slurm_protocol_defs.c index db6946343f2d86aa531e4fe0ada525a16adce3c1..0a8faf2ad90937aca5fcc3d220c15de5fc348fdc 100644 --- a/src/common/slurm_protocol_defs.c +++ b/src/common/slurm_protocol_defs.c @@ -962,7 +962,15 @@ extern void slurm_free_suspend_int_msg(suspend_int_msg_t *msg) extern void slurm_free_stats_response_msg(stats_info_response_msg_t *msg) { - xfree(msg); + if (msg) { + xfree(msg->rpc_type_id); + xfree(msg->rpc_type_cnt); + xfree(msg->rpc_type_time); + xfree(msg->rpc_user_id); + xfree(msg->rpc_user_cnt); + xfree(msg->rpc_user_time); + xfree(msg); + } } extern void slurm_free_spank_env_request_msg(spank_env_request_msg_t *msg) diff --git a/src/sdiag/sdiag.c b/src/sdiag/sdiag.c index c086101682ab8a7141fe42274d674986494a6196..373b67912997a5dcca8f6c658c5be45e7b84bb7c 100644 --- a/src/sdiag/sdiag.c +++ b/src/sdiag/sdiag.c @@ -89,6 +89,11 @@ int main(int argc, char *argv[]) if (rc == SLURM_SUCCESS) { _sort_rpc(); rc = _print_stats(); +#ifdef MEMORY_LEAK_DEBUG + slurm_free_stats_response_msg(buf); + xfree(rpc_type_ave_time); + xfree(rpc_user_ave_time); +#endif } else slurm_perror("slurm_get_statistics"); } diff --git a/src/slurmctld/proc_req.c b/src/slurmctld/proc_req.c index 32bc3fd062b5d27df81716a2f4d0c4cbba7fa36d..39eab258b6d42bcaa58398ee27c45813fd927815 100644 --- a/src/slurmctld/proc_req.c +++ b/src/slurmctld/proc_req.c @@ -4809,10 +4809,7 @@ static void _pack_rpc_stats(int resp, char **buffer_ptr, int *buffer_size, buffer = create_buf(*buffer_ptr, *buffer_size); set_buf_offset(buffer, *buffer_size); for (i = 0; i < rpc_type_size; i++) { - if (rpc_type_id[i]) { - info("rpc_type:%u count:%u time:%"PRIu64"", - rpc_type_id[i], rpc_type_cnt[i], rpc_type_time[i]); - } else + if (rpc_type_id[i] == 0) break; } pack32(i, buffer); @@ -4820,11 +4817,8 @@ static void _pack_rpc_stats(int resp, char **buffer_ptr, int *buffer_size, pack32_array(rpc_type_cnt, i, buffer); pack64_array(rpc_type_time, i, buffer); - for (i = 0; i < rpc_user_size; i++) { - if (rpc_user_id[i] || (i == 0)) { - info("rpc_user:%u count:%u time:%"PRIu64"", - rpc_user_id[i], rpc_user_cnt[i], rpc_user_time[i]); - } else + for (i = 1; i < rpc_user_size; i++) { + if (rpc_user_id[i] == 0) break; } pack32(i, buffer);