On Fri, 2017-12-15 at 10:28 -0700, Jason Gunthorpe wrote: > Though overall, there is really no reason to even cleanup the threads, > just call exit? Memory leak detectors like the one in Valgrind only produce meaningful results if threads are stopped cleanly before exit() is called. > @@ -1887,7 +1888,9 @@ static void free_res(struct resources *res) > modify_qp_to_err(res->ud_res->qp); > > if (res->reconnect_thread) { > - pthread_kill(res->reconnect_thread, SIGINT); > + uint64_t val = 1; > + > + write(res->sync_res->stop_event_fd, &val, sizeof(val)); > pthread_join(res->reconnect_thread, &status); This patch does not remove all pthread_kill() calls. There are two other such calls: $ git grep -nHw pthread_kill srp_daemon/srp_daemon.c:1897: pthread_kill(res->async_ev_thread, SIGINT); srp_daemon/srp_daemon.c:1901: pthread_kill(res->trap_thread, SIGINT); Bart.��.n��������+%������w��{.n�����{���fk��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f