diff --git a/src/srun/srun.c b/src/srun/srun.c index 3b4adfede6986cdcc5531d93335288b4a4074d21..947d66daf3291312080e5911d4127156e048ef83 100644 --- a/src/srun/srun.c +++ b/src/srun/srun.c @@ -488,7 +488,7 @@ int srun(int ac, char **av) _send_step_complete_rpc(global_rc); if (msg_thread) { srun_shutdown = true; - pthread_kill(msg_thread, SIGINT); + pthread_cancel(msg_thread); pthread_join(msg_thread, NULL); } #else @@ -1123,6 +1123,9 @@ static void *_msg_thr_internal(void *arg) slurm_msg_t *msg; int *slurmctld_fd_ptr = (int *)arg; + (void) pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); + (void) pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + while (!srun_shutdown) { newsockfd = slurm_accept_msg_conn(*slurmctld_fd_ptr, &cli_addr); if (newsockfd == SLURM_SOCKET_ERROR) {