--- rpc/svc.c 2015-11-15 18:49:51.101297000 -0500 +++ rpc/svc.c 2015-11-15 18:51:43.411745000 -0500 @@ -189,10 +189,16 @@ svcpool_destroy(SVCPOOL *pool) for (g = 0; g < SVC_MAXGROUPS; g++) { grp = &pool->sp_groups[g]; mtx_lock(&grp->sg_lock); + } + for (g = 0; g < SVC_MAXGROUPS; g++) { + grp = &pool->sp_groups[g]; while ((xprt = TAILQ_FIRST(&grp->sg_xlist)) != NULL) { xprt_unregister_locked(xprt); TAILQ_INSERT_TAIL(&cleanup, xprt, xp_link); } + } + for (g = 0; g < SVC_MAXGROUPS; g++) { + grp = &pool->sp_groups[g]; mtx_unlock(&grp->sg_lock); } TAILQ_FOREACH_SAFE(xprt, &cleanup, xp_link, nxprt) {