Normally I'd use
M-x list-processes to see what Emacs is running in the background. But in this case
list-processes itself hangs. What is the right thing to do in this situation?
If this happens it means that Emacs is having trouble communicating with some subprocess. It is a good idea to leave Emacs and look at its subprocesses from the hosting operating system.
For example, on Unix this may be done with
pstree $(pidof emacs). This won't show which process is causing the problem, but can at least serve as a kind of sanity check.