Description
KernelStackWatchdog::Unregister can block if the watchdog is currently in the process of dumping a thread's stacks. The stack dumping can take several seconds in the worst case, so this can delay another thread from exiting.
There's currently a comment indicating that we don't usually care about delaying thread exits, but there are actually a few places where we do join() on a thread. In particular, in earlier versions Peer::Close() joins on a ResettableHeartbeater and thus can get stuck for a while.