DF-2615 / instrument.diff
diff --git a/sys/kern/kern_dmsg.c b/sys/kern/kern_dmsg.c index d6e90ee..a719936 100644 --- a/sys/kern/kern_dmsg.c +++ b/sys/kern/kern_dmsg.c @@ -277,8 +277,12 @@ kdmsg_iocom_uninit(kdmsg_iocom_t *iocom) lockmgr(&iocom->msglk, LK_EXCLUSIVE); atomic_set_int(&iocom->msg_ctl, KDMSG_CLUSTERCTL_KILLRX); + kprintf("DF2615_DBG: uninit entered rd_td=%p wr_td=%p flags=%08x\n", + iocom->msgrd_td, iocom->msgwr_td, iocom->flags); msg = kdmsg_msg_alloc(&iocom->state0, DMSG_LNK_PING, NULL, NULL); kdmsg_msg_write_locked(iocom, msg); + kprintf("DF2615_DBG: after ping write, msgq.first=%p\n", + TAILQ_FIRST(&iocom->msgq)); retries = 10; while (iocom->msgrd_td || iocom->msgwr_td) { @@ -313,6 +317,16 @@ kdmsg_iocom_uninit(kdmsg_iocom_t *iocom) fdrop(iocom->msg_fp); iocom->msg_fp = NULL; } + { + kdmsg_msg_t *m; + int nleak = 0; + TAILQ_FOREACH(m, &iocom->msgq, qentry) + ++nleak; + kprintf("DF2615_DBG: uninit exit msgq_nleak=%d\n", nleak); + if (nleak) + kprintf("DF2615_LEAK: %d kdmsg_msg(s) queued at " + "iocom_uninit exit\n", nleak); + } lockmgr(&iocom->msglk, LK_RELEASE); } |